剑指offer67题-No67.剪绳子
法1:动态规划 先贴个递归版本: int cutRope(int n) { // write code here if(n <= 4) return n; int res = 0; for(int i = 1; i < n; i++){ // 从i=1开始 表示第一刀剪下的长度 res = max(res, max(cutRope(n-…
2025-6-19 14:58
|
|
2025-6-19 14:58
剑指offer67题-No52.正则表达式匹配
字符串处理 没想到是动态规划题,感觉特别难 LCR 137. 模糊搜索验证 - 力扣(LeetCode) 法1:DP 用f[i][j]表示s的前i个字符与p的前j个字符是否能匹配。考虑情况: p的第j个字符是小写字符:f[i][j] = f[i-1][j-1] (if s[i] = p[j])f[i][j] = false (if s[i] ≠ p…
2025-6-05 13:55
|
|
2025-6-05 14:02
剑指offer67题-No30.连续子树的最大和
动态规划 方法1,可以通过暴力On^2的方法,循环两次求出每个子数组的和对比。 法2.DP 设dp[i],dp[i]代表以array[i]为结尾的连续子数组最大和。 转移方程为,dp[i] = max(array[i],dp[i-1] + array[i]),理解如下: 因为以第n个数为结尾,所以array[n]是必然被选择的 基于dp[n-1]的…
2025-5-28 12:13
|
|
2025-5-28 12:13
剑指offer67题-No7-No10.简单dp递归合集
NO7斐波那契数列 用递归的写法,复杂度将是O(2^n)级别的,无法忍受。 用三个变量存储递归的中间值,时间复杂度能到O(n)。 public int Fibonacci (int n) { // write code here int t1 = 1; int t2 = 1; int t3 =…
2025-5-13 17:26
|
|
2025-5-13 17:27