leetcode 动态规划类型题

1,Triangle

1 int mininumTotal(vector<vector<int>>& triangle)  {
2     for (int i = triangle.size() - 2; i >= 0; --i) {
3         for (int j = 0; j < i + 1; ++j) {
4             // 从下往上依次保存当前路径的最小值,上层只会用到下层的最小值
5             triangle[i][j] += min(triangle[i + 1][j], triangle[i + 1][j + 1]);
6         }
7     }
8     return triangle[0][0];
9 }

triangle

2,Maximum SubArray

 1 /*
 2  * 状态转移方程为:f[j] = max{ f[j-1] + S[j],S[j] },其中  1 <= j <= n
 3  *                 target = max{ f[j] },其中  1 <= j <= n
 4 */
 5 int maxArray(vector<int>& nums) {
 6     int n = nums.size();
 7     vector<int> dp(n + 1);
 8     dp[0] = 0;
 9     for (int i = 0; i < n; ++i) {
10         dp[i + 1] = max(dp[i] + nums[i], nums[i]);
11     }
12     return *max_element(dp.begin(), dp.end());

maxArray

3,

原文地址:https://www.cnblogs.com/zpcoding/p/10746370.html

时间: 2024-11-05 21:36:45

leetcode 动态规划类型题的相关文章

leetcode动态规划--基础题

跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置. 数组中的每个元素代表你在该位置可以跳跃的最大长度. 判断你是否能够到达最后一个位置. 思路 根据题目意思,最大跳跃距离,说明可以跳0--nums[i]的距离 可以把跳跃看成走nums[i]步,如果能走到下一位置则可以加油获取更多的步数(nums[j]步),但是不能累加 那么只需扫一遍nums数组,更新剩余能跳的距离(注意不能累加,只能取最大!) 到终点之前判断是否有剩余步骤即可 代码 class Solution { public:

快速上手leetcode动态规划题

快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了解到动态规划是“带有备忘录的递归”, 而大多数用来理解动态规划的例子都是斐波那契数列,就是那个经典的递归式 f(i)=f(i-1)+f(i-2) ,f(1)=f(2)=1 那么我们就可以得到很多式子,比如求f(5): f(5)=f(4)+f(3); f(4)=f(3)+f(2); f(3)=f(2)

Leetcode动态规划【简单题】

目录 Leetcode动态规划[简单题] 53. 最大子序和 题目描述 思路分析 复杂度分析 70.爬楼梯 题目描述 思路分析 复杂度分析 121.买卖股票的最佳时机 题目描述 思路分析 复杂度分析 303.区域和检索-数组不可变 题目描述 思路分析 复杂度分析 Leetcode动态规划[简单题] 动态规划(Dynamic programming,简称DP),是一种把原问题分解为相对简单的子问题的方式求解复杂问题的方法.动态规划相较于递归,拥有更少的计算量. 53. 最大子序和 题目描述 给定一

LeetCode第五题,Longest Palindromic Substring

题目原文: Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring. 题意解析: 最长回文子串.就是给定一个字符串S,找出其中的最长回文子串,并返回该子串. 解法: 第一种方法显然是循环暴力枚举,复杂度为O(

LeetCode 第 3 题(Longest Substring Without Repeating Characters)

LeetCode 第 3 题(Longest Substring Without Repeating Characters) Given a string, find the length of the longest substring without repeating characters. Examples: Given "abcabcbb", the answer is "abc", which the length is 3. Given "b

字符串类型题

1,Vaild Palindrome 1 bool isPalindrome(string& s) { 2 transform(s.begin(), s.end(), s.begin(), tolower); // 把字符全部转换成小写 3 int left = 0; 4 int right = s.length()-1; 5 while (left < right) { 6 if (!isalnum(s[left])) ++left; 7 else if (!isalnum(s[right

[LeetCode] 系统刷题5_Dynamic Programming

Dynamic Programming 实际上是[LeetCode] 系统刷题4_Binary Tree & Divide and Conquer的基础上,加上记忆化的过程.就是说,如果这个题目实际上是类似于Divide and conquer或者说是DFS,但是在计算过程中有很多重复计算同样的过程的话,那么就可以用Dynamic prgramming/记忆化搜索来完成.基本就是利用空间来简化时间复杂度的过程. 可以/很有可能使用Dynamic programming的条件,满足之一即可. 1.

动态规划23题解析

最近两周做了动态规划的23道经典好题,涉及到区间.树形.数位等三种动态规划类型,现在将这23道题的题解写在下面,方便大家借鉴以及我加深记忆. upd at:20190814 20:46.T7二叉苹果树 1.石子合并 经典的区间DP问题,枚举合并的堆数作为阶段,设f[i][j]表示i->j这段区间内的最优方案,考虑在这段区间内枚举断点k,不难得到f[i][j]=min(f[i][k]+f[k+1][j]+sum(i,j))(最大值同理).破环为链后直接进行DP即可. #include<iostr

LeetCode开心刷题五十一天——118. Pascal&#39;s Triangle 接触跳转表概念,不知用处 lamda逗号导致表达式加法奇怪不理解119. Pascal&#39;s Triangle II

118. Pascal's Triangle Easy 87984FavoriteShare Given a non-negative integer numRows, generate the first numRows of Pascal's triangle. In Pascal's triangle, each number is the sum of the two numbers directly above it. Example: Input: 5 Output: [ [1],