代码随想录算法训练营第36期DAY45
DAY45
1两数之和
[https://www.bilibili.com/video/BV1pt421u7qG/?spm_id_from=333.880.my_history.page.click&vd_source=baa5f3043be10f96febc0c68c5983df5]
出自B站热血编程系列,主要是复习双指针sum写法、重载比较运算符
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- unordered_map<int,int> map;
- for(int i=0;i<nums.size();i++){
- if(map.find(target-nums[i])!=map.end()) return {map[target-nums[i]],i};
- map[nums[i]]=i;
- }
- return {};
- }
- };
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- vector<int> index(nums.size());
- for(int i=0;i<nums.size();i++) index[i]=i;
- sort(index.begin(),index.end(),[&](int a,int b){
- return nums[a]<nums[b];
- });
- int l=0,r=nums.size()-1;
- while(l<r){
- int sum=nums[index[l]]+nums[index[r]];
- if(sum==target){
- return {index[l],index[r]};
- }
- if(sum<target) l++;
- else r--;
- }
- return{};
- }
- };
朴素法:
- class Solution {
- public:
- vector<int> twoSum(vector<int>& nums, int target) {
- for(int i=0;i<nums.size();i++){
- for(int j=i+1;j<nums.size();j++){
- int sum=nums[i]+nums[j];
- if(sum==target) return {i,j};
- }
- }
- return {};
- }
- };
1049最后一块石头的重量ii
据说和416分割等和子集很像,思考一下:分成了size()/2+size()%2个集合,集合内部的差要尽可能地小。之后就不会了,晕眩。
如果要吃透这题,看这篇题解
[ https://leetcode.cn/problems/last-stone-weight-ii/solutions/805162/yi-pian-wen-zhang-chi-tou-bei-bao-wen-ti-5lfv/ ]
,他归纳了同类型的题,当然得先思考再看题解。
分成尽可能相等重量的两个石头堆。
- class Solution {
- public:
- int lastStoneWeightII(vector<int>& stones) {
- int sum=0;
- for(auto n:stones) sum+=n;
- int target=sum/2;
- vector<int> dp(1505,0);
- for(int i=0;i<stones.size();i++){
- for(int j=target;j>=stones[i];j--)
- dp[j]=max(dp[j],dp[j-stones[i]]+stones[i]);
- }
- return sum-dp[target]-dp[target];
- }
- };
494目标和
正数堆、负数堆。然后就不会了。
- 回溯:
- class Solution {
- public:
- int count=0;
- void backtracking(vector<int>&nums,int target,int index,int cursum){
- if(index==nums.size()){
- if(cursum==target) count++;
- }
- //要加else 否则不终止且越界.
- else{
- backtracking(nums,target,index+1,cursum+nums[index]);
- backtracking(nums,target,index+1,cursum-nums[index]);
- }
- }
- int findTargetSumWays(vector<int>& nums, int target) {
- backtracking(nums,target,0,0);
- return count;
- }
- };
- 动态规划:
Left+right=sum;(无符号,仅集合)
Left-right=target;(手动给他上符号)
得出right=sum-left
进一步:left-sum+left=target;
所以:left=(target+sum)/2;
2*left=sum+target;“所以sum+target是偶数”是有解的保证。
之前的01背包:求的指定容量下的最大装载价值。这里不一样,他要求的是满足给定价值的选集合法有多少种?(装满容器有多少方法)
- class Solution {
- public:
- int findTargetSumWays(vector<int>& nums, int target) {
- int s=0;
- for(auto n:nums) s+=n;
- int left=(s+target)/2;
- if((s+target)%2==1) return 0;
- if(abs(target)>s) return 0;
- vector<int> dp(left+1,0);
- 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];
- }
- };
474一和零
满足两个维度的背包。三变量(物品个数[也就是子集的长度]、m个0,n个1)
Dp数组的含义:dp[i][j] 装满i个0,j个1,最多(max)装了多少个物品(dp[i][j])。
Res: dp[m][n]
放入当前物品,有x个0,y个1;dp[i-x][j-y]+1;
- class Solution {
- public:
- int findMaxForm(vector<string>& strs, int m, int n) {
- vector<vector<int>>dp(m+1,vector<int>(n+1,0));
- for(auto str:strs){
- int x=0,y=0;
- for(auto s:str){
- if(s=='0') x++;
- else 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];
- }
- };
相关文章:
代码随想录算法训练营第36期DAY45
DAY45 1两数之和 [https://www.bilibili.com/video/BV1pt421u7qG/?spm_id_from333.880.my_history.page.click&vd_sourcebaa5f3043be10f96febc0c68c5983df5] 出自B站热血编程系列,主要是复习双指针sum写法、重载比较运算符 class Solution {public: vec…...
springboot+vue 社区养老服务系统
Springbootvue社区居家养老服务系统,数据库mysql,mybatis框架,有可视化页面。 功能: 用户管理 养老服务管理 护理人员管理 服务类型管理 健康状况管理 社区管理 服务区管理 娱乐资讯管理 咨询分类管理 反馈建议 系统简历管理 轮播…...
AI 赋能前端 -- 文本内容概要生成
幸福不在于你获得了什么,而在于你比他人多获得了什么 是比较出来的 大家好,我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder 此篇文章所涉及到的技术有 OpenAILangChainRust/WebAssemblyWeb Workerreact+ts+vite配置环境变量(env)因为,行文字数所限,有些概…...
orin部署tensorrt、cuda、cudnn、pytorch、onnx
绝大部分参考https://blog.csdn.net/qq_41336087/article/details/129661850 非orin可以参考https://blog.csdn.net/JineD/article/details/131201121 报错显卡驱动安装535没法安装、原始是和l4t-cuda的部分文件冲突 Options marked [*] produce a lot of output - pipe it t…...
使用javacv对摄像头视频转码并实现播放
要实现Java接受RTSP流解码,并推送给前端实现播放实时流,可以使用一些流媒体处理库,比如JavaCV或者FFmpeg等。以下是一个简单的示例代码: 1.控制层方面的 根据视频rtsp流链接打开转换,通过响应写出流到前台使用flvjs播…...
Linux网络-Socket套接字_Windows与Linux端双平台基于Udp传输协议进行多线程跨平台的服务器与客户端网络通信的简易聊天室实现
文章目录 一、Socket套接字二、Udp 常见API1. int socket(int domain, int type, int protocol);2. int bind(int socket, const struct sockaddr *address, socklen_t address_len);struct sockaddr 3. ssize_t recvfrom(int socket, void *restrict buffer, size_t length, i…...
20分钟快速入门SQL
SQL(Structured Query Language,结构化查询语言)是一种专门用来管理和操作关系型数据库的编程语言。以下是SQL入门的一些基础概念和教程: 1. SQL基础 数据库(Database):存储数据的集合。表&am…...
汇总区间,合并区间
题目一: 代码如下: vector<string> summaryRanges(vector<int>& nums) {vector<string> ret;if (nums.size() 0)return ret;int n nums.size();int i 0;while (i < n){int prev i;i;while (i < n && nums[i] n…...
Web程序设计-实验05 DOM与BOM编程
题目 【实验主题】 影视网站后台影视记录管理页设计 【实验任务】 1、浏览并分析多个网站后台的列表页面、编辑页面(详见参考资源,建议自行搜索更多后台页面)的主要元素构成和版面设计,借鉴并构思预期效果。 2、新建 index.h…...
Window系统安装Docker
因为docker只适合在liunx系统上运行,如果在window上安装的话,就需要开启window的虚拟化,打开控制面板,点击程序,在程序和功能中可以看到启动和关闭window功能,点开后,找到Hyper-V,Wi…...
RabbitMQ不完整的笔记
同步的不足 1、拓展性差,当要添加功能时,需要在原来的功能代码上做修改,高耦合。 2、性能下降,调用者需要等待服务提供者执行完返回结果后,才能继续向下执行 3、级联失败,由于我们是基于OpenFeign调用交易…...
微软Edge浏览器深度解析:功能、同步、隐私与安全
微软Edge浏览器是微软公司开发的一款网页浏览器,它基于Chromium内核,提供了快速、安全和兼容性良好的网页浏览体验。以下是关于微软Edge浏览器的详细信息和使用指南: 微软Edge浏览器的主要特点: 1. 基于Chromium内核: 渲染引擎:Chromium内核是基于开源项目Blink的,它…...
网络性能测试工具:iperf3介绍
文章目录 前言一、iperf3 的安装和使用下载和安装参数说明 二、iperf3 测试服务端启动客户端启动服务端输出反向测试客户端服务端 前言 新接触的网络环境如何评估网络带宽和吞吐量呢,有的项目没有对业务流量进行合理规划,服务或者中间件出口带宽经常有被…...
scp:Linux系统本地与远程文件传输命令
scp 是Linux系统中用于在本地主机和远程主机之间进行文件传输的命令。 详细说明: scp 命令用于安全地将文件从一个主机传输到另一个主机,所有传输数据都是加密的。语法: scp [参数] [源文件路径] [目标主机:目标路径] 参数说明:…...
python基础(习题、资料)
免费提取资料: 练习、资料免费提取。持续更新迅雷云盘https://pan.xunlei.com/s/VNz6kH1EXQtK8j-wwwz_c0k8A1?pwdrj2x# 本文为Python的进阶知识合辑,包括列表(List)、元组(Tuple)、字典(Dic…...
shell脚本免交互
shell脚本的编写一方面为了减少我们命令的输入,另一方面也可以进行简单的自动化运行,其中为了实现自动化过程,一个很重要的点就是免交互,本篇文章跟大家简单分享两个常用的免交互的方法。 Here Document Here document 通过内联重…...
WPF学习笔记:给文字添加线性渐变效果
<TextBox Text"XXX信息管理系统" VerticalAlignment"Center" Background"Transparent" HorizontalAlignment"Center" FontSize"35" FontWeight"Normal"> <TextBox.Effect> <…...
Fully Convolutional Networks for Semantic Segmentation--论文笔记
论文笔记 资料 1.代码地址 2.论文地址 https://arxiv.org/abs/1411.4038 3.数据集地址 论文摘要的翻译 卷积网络是强大的视觉模型,可以产生特征层次结构。我们表明,卷积网络本身,经过端到端,像素对像素的训练,在…...
Camworks编程怎么样:深度解析其四大特点、五大应用领域、六大优势与七大挑战
Camworks编程怎么样:深度解析其四大特点、五大应用领域、六大优势与七大挑战 Camworks编程,作为计算机辅助制造(CAM)领域的一款重要软件,近年来在制造业中得到了广泛的应用。那么,Camworks编程究竟怎么样呢…...
【Linux】操作系统之冯诺依曼体系
🎉博主首页: 有趣的中国人 🎉专栏首页: Linux 🎉其它专栏: C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好,本片文章将会讲解 操作系统中 冯诺依曼体系 的相关内容。 如果看到最后您觉得这篇文…...
Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
HarmonyOS运动开发:如何用mpchart绘制运动配速图表
##鸿蒙核心技术##运动开发##Sensor Service Kit(传感器服务)# 前言 在运动类应用中,运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据,如配速、距离、卡路里消耗等,用户可以更清晰…...
c++第七天 继承与派生2
这一篇文章主要内容是 派生类构造函数与析构函数 在派生类中重写基类成员 以及多继承 第一部分:派生类构造函数与析构函数 当创建一个派生类对象时,基类成员是如何初始化的? 1.当派生类对象创建的时候,基类成员的初始化顺序 …...
在 Spring Boot 项目里,MYSQL中json类型字段使用
前言: 因为程序特殊需求导致,需要mysql数据库存储json类型数据,因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...
WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
9-Oracle 23 ai Vector Search 特性 知识准备
很多小伙伴是不是参加了 免费认证课程(限时至2025/5/15) Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。 各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和…...
