提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、力扣279. 完全平方数
- 二、力扣139. 单词拆分
前言
这篇背包问题总结篇是对背包问题的高度概括,讲最关键的两部:递推公式和遍历顺序,结合力扣上的题目全都抽象出来了。 而且每一个点,我都给出了对应的力扣题目。
一、力扣279. 完全平方数
class Solution {public int numSquares(int n) {int[] dp = new int[n+1];if(n <= 3){return n;}Arrays.fill(dp,Integer.MAX_VALUE);dp[0] = 0;for(int i = 1; i <= 100; i ++){for(int j = 1; j <= n; j ++){if(j >= i*i){dp[j] = Math.min(dp[j],dp[j-i*i]+1);}}}return dp[n];}
}
二、力扣139. 单词拆分
class Solution {public boolean wordBreak(String s, List<String> wordDict) {boolean[] dp = new boolean[s.length()+1];dp[0] = true;for(int i = 1; i <= s.length(); i ++){for(int j = 0; j < wordDict.size(); j ++){String temp = wordDict.get(j);if(i>=temp.length() && dp[i-temp.length()] && fun(s,temp,i-temp.length())){dp[i] = true;}}}return dp[s.length()];}boolean fun(String s1,String s2,int index){for(int i = 0; i < s2.length(); i ++){if(s1.charAt(i+index) != s2.charAt(i)){return false;}}return true;}
}