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

代码随想录算法训练营第四十三天| 1049 最后一块石头的重量 II 494 目标和 474 一和零

目录

1049 最后一块石头的重量 II

494 目标和 

474 一和零


1049 最后一块石头的重量 II

class Solution {
public:const int N = 1505;int lastStoneWeightII(vector<int>& stones) {vector<int>dp(N);int sum = 0;for(int i = 0;i < stones.size();i++)sum += stones[i];int tar = sum / 2;for(int i = 0;i < stones.size();i++){for(int j = tar;j >= stones[i];j--){dp[j] = max(dp[j],dp[j - stones[i]] + stones[i]);}}return sum - dp[tar] - dp[tar];}
};

时间复杂度O(mn)m是石头的总重量的一半

空间复杂度O(m)

494 目标和 

设sum为数组的总和

设加上部分的和为l,减去部分的和为r,则l - r = target,l = target + r,且l + r = sum,r = sum - l,l = target + sum - l,则l = (target + sum) / 2

由于target和sum都是确定的,所以本题只需要求出和为(target + sum) / 2的情况数

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

时间复杂度O(mn)m为背包大小,即(target + sum) / 2的值

空间复杂度O(m)

474 一和零

01背包问题 

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>>dp(m + 1,vector<int>(n + 1));for(string str : strs){int zeroSum = 0;int oneSum = 0;for(char ch : str){if(ch == '0')zeroSum++;else oneSum++;}for(int i = m;i >= zeroSum;i--){for(int j = n;j >= oneSum;j--){dp[i][j] = max(dp[i][j],dp[i - zeroSum][j - oneSum] + 1);}}}return dp[m][n];}
};

时间复杂度O(mnl+L)l为字符串的总数,L为字符串中字符的总数

空间复杂度O(mn)

相关文章:

  • 华为配置Smart Link主备备份示例
  • Android Kotlin 泛型:强大的类型抽象和重用利器
  • 3、APScheduler: 详解Trigger种类和用法【Python3测试任务管理总结】
  • 等等Domino 14.0FP1
  • SCAU:18054 输出不同的数
  • 如何快速制作一个属于自己的网站
  • 【力扣】19. 删除链表的倒数第 N 个结点
  • 【基于Python的厦门二手房分析和可视化】
  • 【网络协议】LACP(Link Aggregation Control Protocol,链路聚合控制协议)
  • Linux学习笔记-Ubuntu下ssh服务器连接异常Connection reset
  • IDEA版SSM入门到实战(Maven+MyBatis+Spring+SpringMVC) -Spring中FactoryBean
  • 基于FPGA的视频接口之高速IO(光纤)
  • uniApp 中实现一个骰子动效
  • 超越MJ:PixArt-α超低成本,高质量文生图创新模型
  • C++ 常函数 常对象 const
  • 3.7、@ResponseBody 和 @RestController
  • const let
  • happypack两次报错的问题
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • JS基础之数据类型、对象、原型、原型链、继承
  • js写一个简单的选项卡
  • PHP的Ev教程三(Periodic watcher)
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 前端之Sass/Scss实战笔记
  • 驱动程序原理
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用Swoole加速Laravel(正式环境中)
  • 微信小程序:实现悬浮返回和分享按钮
  • 写给高年级小学生看的《Bash 指南》
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​secrets --- 生成管理密码的安全随机数​
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • #### go map 底层结构 ####
  • #我与虚拟机的故事#连载20:周志明虚拟机第 3 版:到底值不值得买?
  • $.proxy和$.extend
  • (6)设计一个TimeMap
  • (9)STL算法之逆转旋转
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (C)一些题4
  • (k8s中)docker netty OOM问题记录
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .a文件和.so文件
  • .h头文件 .lib动态链接库文件 .dll 动态链接库
  • .Net CF下精确的计时器
  • .NET 命令行参数包含应用程序路径吗?
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net小白的大学四年,内含面经
  • .Net中的设计模式——Factory Method模式