2021-03-07
279. 完全平方数https://leetcode-cn.com/problems/perfect-squares/
类似于322. 零钱兑换 https://leetcode-cn.com/problems/coin-change/
可以利用动态规划解决, 方程为
F(i) = min(F(i-j1), F(i-j2) ....), F(i) 表示当前i值 所需要的最小数, j表示给的数, 例如在硬币里面,就是数组里的每个硬币面值
dp[i] = min(dp[i], dp[ i - x]+1)。
只不过硬币的是给定了数组,coins = [1, 2, 3], 平方数需要自己动态构造,使用j*j,
所以对应的x分别为 x = coins[j] , x = j*j , 注意越界,超时,在循环处判断,少遍历些。
2021-03-08
132. 分割回文串 II https://leetcode-cn.com/problems/palindrome-partitioning-ii/
2次dp,先预处理,构造成dp[i][j]表示 下标i-j 是否是回文串。
后面的处理方式和300. 最长递增子序列 https://leetcode-cn.com/problems/longest-increasing-subsequence/ 类似。
最长递增子序列方程: dp[i] = max(dp[i], dp[j]+1)
分割回文串: dp[i] = min(dp[i], dp[j] +1)
参考题解: