admin管理员组文章数量:1516870
Day 43 动态规划 part05(01背包问题part02)
今日任务
- 最后一块石头的重量 II
- 目标和
- 474.一和零
代码实现
- 最后一块石头的重量 II
publicintlastStoneWeightII(int[] stones){int sum =Arrays.stream(stones).sum();//表示大小为i的背包中最多能装dp[i]的东西int[] dp =newint[sum/2+1];for(int i =0; i < stones.length; i++){for(int j = sum/2; j >= stones[i]; j--){
dp[j]=Math.max(dp[j], dp[j - stones[i]]+ stones[i]);}}return sum - dp[dp.length -1]- dp[dp.length -1];}- 目标和
publicintfindTargetSumWays(int[] nums,int target){int sum =Arrays.stream(nums).sum();if((target + sum)%2==1)return0;if(target > sum)return0;int targetSum =(target + sum)/2;int[] dp =newint[targetSum +1];for(int i =0; i < nums.length; i++){for(int j = targetSum; i >= nums[i]; j--){
dp[j]+=dp[j - nums[i]];}}return nums[targetSum];}474.一和零
publicintfindMaxForm(String[] strs,int m,int n){int[][] dp =newint[m +1][n +1];for(String str : strs){int zeroCount =0;int oneCount =0;for(char c : str.toCharArray()){if(c =='0'){
zeroCount++;}elseif(c =='1'){
oneCount++;}}for(int j = m; j >= zeroCount; j--){for(int k = n; k >= oneCount; k--){
dp[j][k]=Math.max(dp[j][k], dp[j - zeroCount][k - oneCount]+1);}}}return dp[m][n];}今日总结
- 没什么可说的,太难了,基本上是凭着记忆在写,希望面试能碰到原题
- 股票今天小亏,板块轮动太快,没什么像样的主线,亦或是这就是正常的节奏?早上强的下午就回落,下午就不一定拉哪一个,乱七八糟什么都可能涨,什么叫顺周期?
版权声明:本文标题:揭秘Adobe Flash Player的秘密武器:代码解析与优化技巧全分享 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1770629468a3256776.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论