动态规划
liubeiandcaocao
这个作者很懒,什么都没留下…
展开
-
最长上升子序列,经典
class Solution: def lengthOfLIS(self, nums: List[int]) -> int: 方法一,动态规划 if not nums: return 0 dp = [1]*len(nums)#dp【0】以0位结尾的,最长上升子序列长度为1 for i in range(1,len(nums)): for j in range(i):原创 2020-09-06 23:02:12 · 166 阅读 · 0 评论 -
剑指offer46 把数字翻译成字符串 多种思路,必看 动态规划
动态规划-1dp【i】表示以i索引结尾时,翻译的方法数class Solution: def translateNum(self, num: int) -> int: string = str(num)#将数字转成str方便索引 dp = [0]*(len(string))###区别1 dp[0] = 1 #dp【i】的含义是第i位为止,有多少种翻译方法;dp[0]第0位为止,有1种翻译方法; #如果dp[i原创 2020-09-06 15:50:02 · 137 阅读 · 0 评论 -
动态规划系列1-字符串交错
对于三个字符串A,B,C。我们称C由A和B交错组成当且仅当C包含且仅包含A,B中所有字符,且对应的顺序不改变。给定三个字符串A,B和C,及他们的长度。请返回一个bool值,代表C是否由A和B交错组成即字符串交错是指由A和B组成C,且C必须包含且仅包含A和B的所有字符,且对应的顺序不改变;...原创 2020-08-17 16:22:18 · 188 阅读 · 0 评论 -
剑指offer47礼物的最大价值
和剑指offer46一样,动态规划的题目,经典必看必学必会class Solution: def maxValue(self, grid: List[List[int]]) -> int: rows , cols = len(grid),len(grid[0]) for r in range(rows): for c in range(cols): premax=0#表示先前的最大值,初始化为0原创 2020-08-01 20:13:34 · 115 阅读 · 0 评论 -
剑指offer46 把数字翻译成字符串
动态规划的很经典的题目,原始方法和使用空间优化的方法,必看必学必会class Solution: def translateNum(self, num: int) -> int:#方法一 s = str(num)#整数转为字符串,才能用索引获取每个值 dp = [0]*len(s) #dp[i]表示以第i位字符为结尾的,翻译方法有多少种 dp[0]=1 for i in range(1,len(s)):原创 2020-08-01 19:47:19 · 115 阅读 · 0 评论 -
剑指offer42 连续子数组的最大和 经典动态规划题目
给定一个数组,求数组元素中的最大和,且要求元素是连续的;所以最大和要么是加上当前的元素,要么是从当前元素开始class Solution: def maxSubArray(self, nums: List[int]) -> int:] #动态规划的经典题目 res = float('-inf') #初始化最终结果为负无穷,因为数组可能全是负数 smax = 0 for i in nums: smax原创 2020-07-27 19:26:28 · 92 阅读 · 0 评论 -
152 乘积最大子数组
类似于53题最大子序和,给一个整数数组 nums ,找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 乘积最大,连续子数组乘积最大的连续子数组,使用动态规划方法class Solution: def maxProduct(self,nums): if not nums: return res=nums[0] pre_max=nums[0] pre_min=nums[0原创 2020-05-26 19:38:34 · 204 阅读 · 1 评论