代码随想录-动态规划5(1049. 最后一块石头的重量 II、494. 目标和、474. 一和零)

2024-03-11 16:04

本文主要是介绍代码随想录-动态规划5(1049. 最后一块石头的重量 II、494. 目标和、474. 一和零),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1049. 最后一块石头的重量 II

class Solution {
public:int lastStoneWeightII(vector<int>& stones) {int target = 0;int flag = 0;for (int i=0; i<stones.size();i++){target += stones[i];}vector<int> dp(target/2+1, 0);for (int i=0; i<stones.size();i++){for (int j=target/2; j>0;j--){if (i==0) {if (j>=stones[i]) dp[j]=stones[i];}else{if (j-stones[i]<0) dp[j]=dp[j];else dp[j] = max(dp[j], dp[j-stones[i]]+stones[i]);}}}return target - dp[target/2] - dp[target/2];}
};

494. 目标和

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {if (nums.size()==1 && nums[0]==abs(target)) return 1;if (nums.size()==1 && nums[0]!=abs(target)) return 0;int sum = 0;for (int i=0; i<nums.size(); i++){sum += nums[i];}if ((target+sum)%2!=0) return 0;if (abs(target) > sum) return 0;int mid = (target+sum)/2;vector<int> dp(mid+1, 0);dp[0] = 1;// for (int i=0; i<dp.size(); i++)// {//     if (i==nums[0]) dp[i] = 1;// }for (int i=0; i<nums.size(); i++){for (int j=mid; j>=0; j--){if (j-nums[i]>=0) dp[j] = dp[j] + dp[j-nums[i]];}}return dp[mid];}
};

474. 一和零

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m+1, vector<int>(n+1, 0));unordered_map<char,int> hash;for (int s=0; s<strs.size(); s++){hash.clear();for (int h=0; h<strs[s].size(); h++){hash[strs[s][h]]++;}for (int i=m; i>=0; i--){for (int j=n; j>=0; j--){dp[i][j] = max(dp[i][j], i-hash['0']>=0&&j-hash['1']>=0?dp[i-hash['0']][j-hash['1']]+1:0);}}}return dp[m][n];}
};

这篇关于代码随想录-动态规划5(1049. 最后一块石头的重量 II、494. 目标和、474. 一和零)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798307

相关文章

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Vue ElementUI中Upload组件批量上传的实现代码

《VueElementUI中Upload组件批量上传的实现代码》ElementUI中Upload组件批量上传通过获取upload组件的DOM、文件、上传地址和数据,封装uploadFiles方法,使... ElementUI中Upload组件如何批量上传首先就是upload组件 <el-upl

前端 CSS 动态设置样式::class、:style 等技巧(推荐)

《前端CSS动态设置样式::class、:style等技巧(推荐)》:本文主要介绍了Vue.js中动态绑定类名和内联样式的两种方法:对象语法和数组语法,通过对象语法,可以根据条件动态切换类名或样式;通过数组语法,可以同时绑定多个类名或样式,此外,还可以结合计算属性来生成复杂的类名或样式对象,详细内容请阅读本文,希望能对你有所帮助...

Nginx实现动态封禁IP的步骤指南

《Nginx实现动态封禁IP的步骤指南》在日常的生产环境中,网站可能会遭遇恶意请求、DDoS攻击或其他有害的访问行为,为了应对这些情况,动态封禁IP是一项十分重要的安全策略,本篇博客将介绍如何通过NG... 目录1、简述2、实现方式3、使用 fail2ban 动态封禁3.1 安装 fail2ban3.2 配

Vue3中的动态组件详解

《Vue3中的动态组件详解》本文介绍了Vue3中的动态组件,通过`component:is=动态组件名或组件对象/component`来实现根据条件动态渲染不同的组件,此外,还提到了使用`markRa... 目录vue3动态组件动态组件的基本使用第一种写法第二种写法性能优化解决方法总结Vue3动态组件动态

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后