上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页
摘要: 题目 分析 这道题开始我是想用回溯,但一看数据量,肯定会超时(指数级的时间复杂度)。没有思路,想着应该是dp,怎么进行转化,转为我们熟悉的问题呢?题目的意思就是说将数组分成两堆n1,n2,使得 n1 - n2 = S 。且有n1 + n2 = sum。由这两个式子可得 n1 + n2 = 2 * n 阅读全文
posted @ 2021-02-15 18:19 Uitachi 阅读(153) 评论(0) 推荐(0)
摘要: 题目 分析 本题和分割等和子集题目有异曲同工之妙。本题就是将石头尽可能分成重量相同的两堆,使得这两堆重量相减之后结果最小。这就转化为了分割相同等和子集的题目。 代码 二维dp数组 1 class Solution { 2 public: 3 int lastStoneWeightII(vector< 阅读全文
posted @ 2021-02-15 17:15 Uitachi 阅读(128) 评论(0) 推荐(0)
摘要: 题目 分析 两个子集和相等,转化为找到所有元素总和一半的集合。注意不能回溯,因为时间复杂度为O(2N)会超时。可以将此问题看成0-1背包问题。背包容量为sum / 2。如果总和一半为奇数,那么不可分成两个相同总和的子集。在此问题种物品的重量和价值为数字本身的数值。设dp[i][j]为从0-i中选取不 阅读全文
posted @ 2021-02-13 17:54 Uitachi 阅读(121) 评论(0) 推荐(0)
摘要: 题目 分析 首先要画个草图观察规律,n = 1 ,2, 3 时,结果分别为1,2,5。分析当 n = 3时,BST的种类构成:根节点为1,根节点为2,根节点为3。当根节点为1时,有两种形态 当根节点为2时,有一种形态 当根节点为3时,有两种形态 所以n为3时的BST数量为:根节点为1的BST个数 + 阅读全文
posted @ 2021-02-12 21:40 Uitachi 阅读(38) 评论(0) 推荐(0)
摘要: 题目 分析 用dp[i]来表示 和为 i 的拆分正整数成绩最大值。拆分方式 :一、两个数 j ,i - j 。二、两个以上 j 、dp[i - j ],拆分(i - j ),j 的范围是从 1 到 i - 1 ,每次会得到dp[i] = max(j * (i - j) ,j * dp[j-i])。 阅读全文
posted @ 2021-02-07 22:50 Uitachi 阅读(54) 评论(0) 推荐(0)
摘要: 题目 分析 dp[i][j] 表示从(0,0)到(i,j)有多少条路径。对dp数组初始化,每次移动只能向右或者向下,对第0行和第0列初始化。如果第0 行或者第0列某个位置上第一次出现了障碍物,那么之后的位置都无法走到。动态转移方程为:如果没有障碍物dp[i][j] = dp[i - 1][j] + 阅读全文
posted @ 2021-02-07 21:51 Uitachi 阅读(45) 评论(0) 推荐(0)
摘要: 题目 分析 dp【i】【j】代表从(0,0)出发走到(i,j)位置上有多少种路径。关于dp数组的初始化,由于机器人每次只能向右或者向下移动一步。所以第 0 行和第 0 列dp数组初始化为 1。动态转移方程: dp[i][j] = dp[i - 1][j] + dp[i][j - 1],因为dp[i] 阅读全文
posted @ 2021-02-07 21:22 Uitachi 阅读(59) 评论(0) 推荐(0)
摘要: 题目 分析 本题也是爬楼梯的扩展,题意不明确。参考LC评论区的解释后,豁然开朗。关键是对于cost代价值的理解,它代表的是从当前楼梯迈出所耗费的体力,而不是到达该层所需要的体力。可以翻译如下: 在首尾都加一个0分别代表地面,和楼顶 数组的每一个数字代表从当前楼梯迈出所需要耗费的体力 从地面开始,第一 阅读全文
posted @ 2021-02-05 22:21 Uitachi 阅读(81) 评论(0) 推荐(0)
摘要: 题目 分析 用一维数组 dp[n] 表示爬到 n阶楼顶有多少种爬法,观察规律发现 dp[n] = dp[i-1] + dp[i-2],就是斐波那契数列。因为爬楼梯每次只能一个或两个台阶 代码 1 class Solution { 2 public: 3 int climbStairs(int n) 阅读全文
posted @ 2021-02-05 20:49 Uitachi 阅读(57) 评论(0) 推荐(0)
摘要: 题目 代码 递归 1 class Solution { 2 public: 3 4 int fib(int n) { 5 if(n == 0) return 0; 6 if(n == 1) return 1; 7 return fib(n-1) + fib(n-2); 8 } 9 }; 时间复杂度O 阅读全文
posted @ 2021-02-05 20:21 Uitachi 阅读(71) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 19 下一页