往期内容在这里:
大家好,继续为大家推荐200道大数据面试常考Leetcode算法题,这期为--动态规划篇,附带解析,都是从Leetcode官网总结大神们的解法(在这里感谢大神的帮助,我只是个搬运工!)这篇更新3篇,艾瑞巴迪和我一起刷起来!!
200道大数据面试常考Leetcode算法题(动态规划篇)53-最大子序和
Leetcode原题为:
题解为:
class Solution: def maxSubArray(self, nums: List[int]) -> int: # 从数组第二个到最后一个开始遍历 for i in range(1,len(nums)): # 判断累加当前值前面所有项的和跟当前值谁大,累加和大于当前值说明找到 # 每一个i为终点的连续最大子序列 nums[i] = max(nums[i-1]+nums[i],nums[i]) return max(nums)
200道大数据面试常考Leetcode算法题(动态规划篇)70-爬楼梯
Leetcode原题:
题解为:
class Solution(object): def climbStairs(self, n): # 特殊判断 if n == 1: return 1 # 初始化用于存放结果的列表 res = [0 for _ in range(n + 1)] # 第一个跟第二个都是本身 res[1] = 1 res[2] = 2 # 从第三个开始,当前值等于前一个和前两个的和 for i in range(3, n + 1): res[i] = res[i - 1] + res[i - 2] return res[n]
200道大数据面试常考Leetcode算法题(动态规划篇)120-三角形最小路径和
Leetcode原题为:
题解为:
class Solution: def minimumTotal(self, triangle: List[List[int]]) -> int: # 定义当前数组从最下面一行开始 dp = triangle[-1] # 从底下往上 for i in range(len(triangle)-2,-1,-1): # 遍历该层每个位置 for j in range(i+1): # 由递推公式得出 dp[j] = triangle[i][j] + min(dp[j],dp[j+1]) # 返回最后一个结果 return dp[0]
好啦,这期的分享到这里结束啦!我们下期(动态规划进阶(与矩阵相关)篇)再见!