当前位置: 首页 > news >正文

代码随想录算法训练营day36

1.最后一块石头的重量

1.1 题目

https://leetcode.cn/problems/last-stone-weight-ii/description/

1.2 题解

class Solution 
{
public:int lastStoneWeightII(vector<int>& stones) {int sum = 0;for (const auto& i : stones){sum += i;}int tmp = sum / 2;  //可以看作背包容量//确定dp数组,dp[j]表示背包容量为j所能装的最大价值vector<int> dp(1501, 0);//确定递推逻辑//dp[j]=max(dp[j]+dp[j-stones[i]]+stones[i]//初始化//遍历for (int i = 0; i < stones.size(); i++){for (int j = tmp; j >= stones[i]; j--){dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);}}int result = dp[tmp];return sum - 2 * result;}
};

2.目标和

2.1 题目

https://leetcode.cn/problems/target-sum/description/

2.2 题解

class Solution {
public:int findTargetSumWays(vector<int>& nums, int target) {//取正符号的集合是left,取负符号的集合是right,则有// left-right=target,left+right=sum,所以有sum=2*left-target,left=(sum+target)/2//题目可以转化为背包容量为left,有几种方法将他装满int sum = 0;for (const auto& i : nums){sum += i;}int left = (sum + target) / 2;if ((sum + target) % 2 != 0)return 0;if(abs(target)>sum)return 0;//确定dp数组,dp[j]表示背包容量为j装满这个背包的方法个数vector<int> dp(left+1, 0);//确定递推规律//dp[j]+=dp[j-nums[i]];//初始化dp[0] = 1;//遍历for (int i = 0; i < nums.size(); i++){for (int j = left; j >= nums[i]; j--){dp[j] += dp[j - nums[i]];}}return dp[left];}
};

3.一和零

3.1 题目

https://leetcode.cn/problems/ones-and-zeroes/description/

3.2 题解

class Solution 
{
public:int findMaxForm(vector<string>& strs, int m, int n) {//确定dp数组,两个维度,一个维度为0的个数,一个维度为1的个数//dp[i][j]表示装满这个需要i个0和j个1的背包最大有多少个元素vector<vector<int>> dp(m + 1, vector<int>(n + 1, 0));//确定递推规律//dp[i][j]=max(dp[i][j],dp[i-x][j-y]+1);//初始化dp[0][0] = 0;//遍历for (const auto& str : strs){int x =0, y = 0;for (const auto& s : str){if (s == '0')x++;if (s == '1')y++;}for (int i = m; i >= x; i--){for (int j = n; j >= y; j--){dp[i][j] = max(dp[i][j], dp[i - x][j - y] + 1);}}}return dp[m][n];}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 老古董Lisp实用主义入门教程(9): 小小先生学习Lisp表达式
  • 微信小程序中的模块化、组件化开发:完整指南
  • 【C++】——string(模拟实现)
  • 全国计算机二级考试C语言篇4——选择题
  • 汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)
  • 0910作业+思维导图
  • SMA2:代码实现详解——Image Encoder篇(Hiera章)
  • Proxyless Service Mesh:下一代微服务架构体系
  • 【HarmonyOS NEXT】实现网络图片保存到手机相册
  • 音视频直播应用场景探讨之RTMP推流还是GB28181接入?
  • javase复习day22泛型、set、数据结构
  • USBCANFD卡在新能源BMS上位机的应用
  • Android CustomDialog圆角背景不生效的问题
  • String字符串
  • uniapp(H5)设置反向代理,设置成功后页面报错
  • JS 中的深拷贝与浅拷贝
  • co.js - 让异步代码同步化
  • css布局,左右固定中间自适应实现
  • ES6语法详解(一)
  • Git的一些常用操作
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • SQLServer之创建显式事务
  • Yeoman_Bower_Grunt
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 前端
  • 算法-图和图算法
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 鱼骨图 - 如何绘制?
  • ​渐进式Web应用PWA的未来
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #13 yum、编译安装与sed命令的使用
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #数据结构 笔记一
  • #图像处理
  • #预处理和函数的对比以及条件编译
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (回溯) LeetCode 46. 全排列
  • (六)c52学习之旅-独立按键
  • (循环依赖问题)学习spring的第九天
  • (一)十分简易快速 自己训练样本 opencv级联haar分类器 车牌识别
  • (原創) 物件導向與老子思想 (OO)
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET Framework .NET Core与 .NET 的区别
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • /*在DataTable中更新、删除数据*/
  • /3GB和/USERVA开关
  • :中兴通讯为何成功
  • [AIGC] 广度优先搜索(Breadth-First Search,BFS)详解
  • [C#]调用本地摄像头录制视频并保存
  • [Grafana]ES数据源Alert告警发送
  • [iHooya]2023年1月30日作业解析
  • [Linux] Linux入门必备的基本指令(不全你打我)
  • [linux]GCC G++官方源码国内下载地址汇总
  • [loj#115] 无源汇有上下界可行流 网络流
  • [Luogu 3958] NOIP2017 D2T1 奶酪