📜  前 20 个动态编程面试问题(1)

📅  最后修改于: 2023-12-03 15:07:17.130000             🧑  作者: Mango

前20个动态编程面试问题

动态编程是一个经常出现在软件工程师面试中的问题类型。在这种问题中,面试官会要求你使用动态编程算法来解决一个在时间复杂度方面较差的问题。

以下是前20个动态编程面试问题及其解答:

  1. 给定一个地图和一个起点和终点,请编写一个函数来查找从起点到终点的最短路径。
def shortest_path(map, start, end):
    pass
  1. 给定一组硬币和一个目标总和,请找到组成该总和所需的最小硬币数。
def min_coins(coins, total):
    pass
  1. 给定一个字符串,请使用最少的分隔符将其分隔成回文字符串。
def min_palindromic(string):
    pass
  1. 给定一个数列,请找到其中最长的连续上升子序列。
def longest_increasing_subsequence(nums):
    pass
  1. 给定一个网格,请计算从左上角到右下角的所有路径的总和。
def grid_total(grid):
    pass
  1. 给定一个数组,请找到两个元素之间的最大差异,并确保第二个元素比第一个元素大。
def max_gap(nums):
    pass
  1. 给定一个字符串,请找到其中最长的回文子字符串。
def longest_palindromic(string):
    pass
  1. 给定一个长度为n的数组,请找到其中最长的连续子数组,其和为正数。
def longest_positive_subarray(nums):
    pass
  1. 给定一个字符串,请找到其中最长的不连续上升子序列。
def longest_non_increasing_subsequence(string):
    pass
  1. 给定一个长度为n的数组,请计算其中最大的连续子序列和。
def max_subarray_sum(nums):
    pass
  1. 给定一个长度为n的字符串,请找到其中最长的回文子序列。
def longest_palindromic_subsequence(string):
    pass
  1. 给定一个网络,请计算从给定节点到所有节点的最短路径。
def shortest_path(graph, start):
    pass
  1. 给定一个数组,请找到一个连续的子数组,其和为给定的目标和。
def subarray_sum(nums, target):
    pass
  1. 给定一个字符串,请找到其中最长的不连续子序列。
def longest_non_contiguous_subsequence(string):
    pass
  1. 给定一堆硬币和一个目标总数,请找到所有组合,组成该总数。
def coin_combinations(coins, total):
    pass
  1. 给定一堆令牌和一个目标分数,请找到获得该分数所需的最少令牌数量。
def min_tokens(tokens, target):
    pass
  1. 给定一个字符串,请找到最长的回文子序列。
def longest_palindrome(string):
    pass
  1. 给定一个网络,请查找从源节点到目标节点的所有路径,并找到最短的路径。
def shortest_paths(graph, start, end):
    pass
  1. 给定一组硬币和一个目标总数,请找到组成该总数所需的最少硬币数。
def min_coins(coins, total):
    pass
  1. 给定一组任务和对应的奖励,请找到能够获得最大奖励的任务序列。
def max_reward(tasks, rewards):
    pass