动态规划
旭小爷丶
菜的抠脚
展开
-
算法-动态规划(乘积最大子数组,和最大子数组)
文章目录连续子数组的最大和乘积最大子数组总结 连续子数组的最大和 面试题42. 连续子数组的最大和 解题思路: 通过“子数组”、“最大和”等关键字,应该联想到动态规划,来看一下这道题是否有最优子结构: 定义一个max数组,max[i]用来记录以nums[i]结尾的连续子数组的最大和。来看一下,是否可以通过max[i-1]推出max[i]: 假设:max[i-1]=k, 当k<0时,nums[i]+k<nums[i],max[i]=nums[i]; 当k>0时,nums[i]+k>原创 2020-05-23 13:14:16 · 635 阅读 · 0 评论 -
3/8每日一题_零钱兑换
#322零钱兑换 解题思路: 一开始看到这道题,便立马想到了是否存在最优子结构,以示例1来说,amount=11,可以由求解amount=10的解再加上面额为1的硬币得到,然而求解amount=9的解应该为{5,2,2},而amount=10的解应该为{5,5},所以并不可以从amount=9的最优解得到amount=10的的最优解,因为之前用动态规划解决问题,都是前一步推后一步,对于现在这种情况...原创 2020-03-09 15:12:30 · 272 阅读 · 0 评论 -
3/14每日一题_最长上升子序列
#300最长上升子序列 解题思路: 刚开始看到这个题,便联想到每日温度那道题: 暴力解法很容易想到,但是时间复杂度达到了O(n2),一种利用栈的反向思维方法可以很巧妙的解决这个问题。 初始化stack.push(7)保存数组下标,result=[0]保存距离; 从后往前进行筛选,将7入栈,T[6]与栈顶元素进行比较(栈内元素保存严格递增的温度所在数组的位置),T[6]>=T[stack...原创 2020-03-16 13:14:57 · 123 阅读 · 0 评论 -
算法-动态规划(不同的搜索二叉树)
之前讲的三个例题都是可以通过前一步问题的解得到当前问题的解,但有些动态规划的问题并不严格要求通过前一步的解来得到当前问题的解,而只是通过前面的解来推导出当前问题的解,对于这种问题,我们需要像高中时候解数学题那样通过前几个解来推导出一般性规律。 LeetCode例题 #96不同的二叉搜索树 给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种? 示例: 输入: 3 输出: 5 解释: ...原创 2020-02-23 00:31:58 · 124 阅读 · 0 评论 -
算法-动态规划(爬楼梯、不同路径、编辑距离)
动态规划算法思想: 动态规划算法要素: 总结: (1)当前问题的最优解可以由前一步的最优解得到 (2)运用一维数组或者二维数组推导递推关系 (3)初始化 LeetCode例题 #70爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数。 当前台阶数为n,可以由(n-1)或者(n-2)级台阶上...原创 2020-02-22 21:03:21 · 279 阅读 · 0 评论