![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
Brain_河神
........................
展开
-
LeetCode练习-中等 - [322. 零钱兑换]
LeetCode练习-中等 - 322. 零钱兑换给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。你可以认为每种硬币的数量是无限的。示例 1:输入:coins = [1, 2, 5], amount = 11输出:3 解释:11 = 5 + 5 + 1示例 2:输入:coins = [2], amount = 3输出:-1示例 3:输入:coins = [1], am原创 2020-10-14 15:13:37 · 99 阅读 · 0 评论 -
LeetCode练习-中等 - 300. 最长上升子序列
LeetCode练习-中等 - 300. 最长上升子序列给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。说明:可能会有多种最长上升子序列的组合,你只需要输出对应的长度即可。你算法的时间复杂度应该为 O(n2) 。进阶: 你能将算法的时间复杂度降低到 O(n log n) 吗?思路一:暴力时间复杂度: O(2^N)空间复杂度: O(N)这也原创 2020-10-11 22:40:13 · 102 阅读 · 0 评论 -
LeetCode练习-简单 -152. 乘积最大子数组(动态规划)
LeetCode练习-简单 -152. 乘积最大子数组(动态规划)给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。示例 2:输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。分析: dp原理:dp[i,0] = if nums[i]>=0原创 2020-08-29 18:52:20 · 145 阅读 · 0 评论 -
LeetCode练习-中等 -120. 三角形最小路径和(动态规划)
LeetCode练习-中等 -120. 三角形最小路径和给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。说明:如果你可以只使用 O(n) 的额外空间(n 为三角形的总行数)来原创 2020-08-16 10:14:14 · 106 阅读 · 0 评论 -
LeetCode练习-简单 -70. 爬楼梯(动态规划)
LeetCode练习-简单 -70. 爬楼梯(动态规划)假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶分析: dp原理:原创 2020-08-12 21:55:57 · 134 阅读 · 0 评论 -
初探-动态规划思想
动态规划(Dynamic Programming)动态规划原理基本思想:问题的最优解如果可以由子问题的最优解推导得到,则可以先求解子问题的最优解,在构造原问题的最优解;若子问题有较多的重复出现,则可以自底向上从最终子问题向原问题逐步求解。使用条件:可分为多个相关子问题,子问题的解被重复使用Optimal substructure(优化子结构):一个问题的优化解包含了子问题的优化解缩小子问题集合,只需那些优化问题中包含的子问题,降低实现复杂性我们可以自下而上的Subteties(重叠原创 2020-08-12 21:55:29 · 139 阅读 · 0 评论