![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
动态规划
动态规划
Chamberlain T
尼蝶
展开
-
代码随想录算法训练营day42 | 01背包问题,416. 分割等和子集
代码随想录算法训练营day42 | 01背包问题,416. 分割等和子集原创 2023-08-29 11:36:35 · 344 阅读 · 0 评论 -
代码随想录算法训练营day41 | 343. 整数拆分,96. 不同的二叉搜索树
代码随想录算法训练营day41 | 343. 整数拆分,96. 不同的二叉搜索树原创 2023-08-22 01:39:48 · 247 阅读 · 0 评论 -
代码随想录算法训练营day39 | 62. 不同路径,63. 不同路径 II
代码随想录算法训练营day39 | 62. 不同路径,63. 不同路径 II原创 2023-08-19 23:09:44 · 1071 阅读 · 0 评论 -
代码随想录算法训练营day38 | 70. 爬楼梯,509. 斐波那契数,746. 使用最小花费爬楼梯
代码随想录算法训练营day38 | 70. 爬楼梯,509. 斐波那契数,746. 使用最小花费爬楼梯原创 2023-08-19 22:55:58 · 297 阅读 · 0 评论 -
LeetCode.121. Best Time to Buy and Sell Stock
LeetCode.121. 买卖股票的最佳时机难度:easyJava:// //暴力法:超时了哈哈// class Solution {// public int maxProfit(int[] prices) {// int length = prices.length;// int ans = 0;// for (int i = 0; i < length; i++) {// fo..原创 2021-12-26 17:09:08 · 314 阅读 · 1 评论 -
LeetCode.213.打家劫舍2
LeetCode.213.打家劫舍2难度:medium这道题是LeetCode.198. 打家劫舍的升级版;因为成了环的缘故要分类讨论取最大值: 包括首元素不包括尾元素的区间 不包括首元素包括尾元素的区间 Java:动态规划:class Solution { public int rob(int[] nums) { int length = nums.length; //特殊情况处理 if (le...原创 2021-12-26 15:28:26 · 393 阅读 · 0 评论 -
LeetCode.198. 打家劫舍
LeetCode.198. 打家劫舍难度:medium动态规划的方法,注释写的很清楚,要注意的是nums只有一个元素的特殊情况;Java:class Solution { public int rob(int[] nums) { int length = nums.length; //dp[i]为盗窃前i号房屋所能偷窃到的最高金额 int[] dp = new int[length + 1]; if (l..原创 2021-12-26 14:24:31 · 452 阅读 · 0 评论 -
LeetCode.1137. 第N个泰波那契数
LeetCode.1137. 第N个泰波那契数难度:easyJava:class Solution { public int tribonacci(int n) { switch (n) { case 0: return 0; case 1: return 1; case 2: return 1; } int a = 0; int b = 1;.原创 2021-12-26 14:05:36 · 66 阅读 · 0 评论 -
0-1背包(1)
学习动态规划,绕不开背包问题;偷一张卡子哥的图:动态规划五部曲:(1)确定dp:dp[i][j]表示从下标为[0-i]的物品里任意取,放进容量为j的背包,价值总和最大是多少;(2)递推公式dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);(3)初始化dp当j=0:背包容量为0时,dp[i][0]显然为0;当i=0时:wei...原创 2021-12-21 17:23:11 · 191 阅读 · 0 评论 -
LeetCode.53.最大子数组和
LeetCode.53.最大子数组和难度:easyJava:动态规划:class Solution { public int maxSubArray(int[] nums) { //dp[i]存储包括nums[i]的最大子序列和 int[] dp = new int[nums.length + 1]; //存储最大子序列和 int ans = nums[0]; //初始化 dp[0.原创 2021-12-19 20:48:58 · 118 阅读 · 0 评论 -
LeetCode.96.不同的二叉搜索树
LeetCode.96.不同的二叉搜索树难度:mediumJava:动态规划:class Solution { public int numTrees(int n) { //dp[i]表示i个节点的二叉搜索树的种类 int[] dp = new int[n + 1]; //初始化 dp[0] = 1; dp[1] = 1; //动态规划 for (int i = 2.原创 2021-12-19 16:47:14 · 85 阅读 · 0 评论 -
LeetCode.343.整数拆分
LeetCode.343.整数拆分难度:medium典型的动态规划的题,写出了状态转移方程后也很好写了;Java:动态规划:class Solution { public int integerBreak(int n) { //dp[i] 存储 i 的拆分最大乘积 int[] dp = new int[n + 1]; //初始化:dp[0]和dp[1]无意义 dp[2] = 1; //动态规划.原创 2021-12-19 16:05:20 · 93 阅读 · 0 评论 -
LeetCode.63.不同路径2
LeetCode.63.不同路径2难度:medium典型的动态规划,不同路径的升级版;Java:动态规划:class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { if (obstacleGrid == null || obstacleGrid.length == 0) { return 0; } ...原创 2021-12-18 21:51:12 · 94 阅读 · 0 评论 -
LeetCode.62.不同路径
LeetCode.62.不同路径难度:medium方法:动态规划和排列组合Java:动态规划:很清晰的思路,哥么把注释写的明明白白;class Solution { public int uniquePaths(int m, int n) { if (m <= 0 || n <= 0) { return 1; } //dp[i][j]表示从(0,0)到(i,j)有多少种方法 .原创 2021-12-17 11:24:47 · 319 阅读 · 0 评论 -
LeetCode.746.使用最小花费爬楼梯
LeetCode.746.使用最小花费爬楼梯难度:easy思路就是动态规划:Java:动态规划:这里用了数组,还可以用滑动窗口的思想,用三个变量来存储,优化空间复杂度为O(1);class Solution { public int minCostClimbingStairs(int[] cost) { int length = cost.length; if (length == 1) { return cost原创 2021-12-17 10:21:30 · 404 阅读 · 0 评论 -
LeetCode.70.爬楼梯
LeetCode.70.爬楼梯难度:easy方法类似509.斐波那契不多赘述,卡子哥的文章拓展挺多;Java:动态规划:class Solution { public int climbStairs(int n) { if (n <= 1) { return n; } int a = 1; int b = 1; int c = 0; for(i.原创 2021-12-17 00:29:02 · 81 阅读 · 0 评论 -
LeetCode.509.斐波那契数
LeetCode.509.斐波那契数难度:easy两种方法动态规划方法和递归的方法:Java:动态规划:确定dp数组及下标位置:dp[i]的定义为:第i个数的斐波那契数值是dp[i] 递推公式: dp[i] = dp[i-1] +dp [i-2] dp数组初始化: dp[0] = 0; dp[1] = 1; 遍历顺序:从前往后 举例推导dp数组//非压缩状态的版本class Solution { public ...原创 2021-12-17 00:06:26 · 231 阅读 · 0 评论