力扣题目训练(20)

2024年2月13日力扣题目训练

  • 2024年2月13日力扣题目训练
    • 594. 最长和谐子序列
    • 598. 区间加法 II
    • 599. 两个列表的最小索引总和
    • 284. 窥视迭代器
    • 287. 寻找重复数
    • 135. 分发糖果

2024年2月13日力扣题目训练

2024年2月13日第二十天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的,我会慢慢补回来,争取一天发两篇,把之前的都补上。

594. 最长和谐子序列

链接: 最长和谐子序列
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是简单的排序,之后找比当前值大1的位置。
代码:

class Solution {
public:int findLHS(vector<int>& nums) {sort(nums.begin(),nums.end());int begin = 0;int ans = 0;for(int end = 0; end < nums.size(); end++){while(nums[end] - nums[begin] > 1) begin++;if(nums[end] - nums[begin] == 1) ans = max(ans,end-begin+1);}return ans;}
};

598. 区间加法 II

链接: 区间加法 II
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是找多次出现的交集,对于每一次操作,给定 (a,b)、,我们会将矩阵中所有满足 0≤i<a0以及 0≤j<b的位置 (i,j)全部加上 1。由于 a,b均为正整数,那么 (0,0)总是满足上述条件,并且最终位置 (0,0)的值就等于操作的次数。因此,我们的任务即为找出矩阵中所有满足要求的次数恰好等于操作次数的位置。

代码:

class Solution {
public:int maxCount(int m, int n, vector<vector<int>>& ops) {if(ops.size() == 0) return m*n;int mina = m;int minb = n;for(int i = 0; i < ops.size(); i++){mina = min(mina,ops[i][0]);minb = min(minb,ops[i][1]); }return mina*minb;}
};

599. 两个列表的最小索引总和

链接: 最小索引总和
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题就是利用哈希表计数计算最小的索引和。
代码:

class Solution {
public:vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {unordered_map<string, int> res;for(int i = 0; i < list1.size(); i++){res[list1[i]]= i+1;}int count = INT_MAX;vector<string> ans;for(int i = 0; i < list2.size(); i++){if(res[list2[i]] ){if(res[list2[i]] + i < count){ans.clear();ans.push_back(list2[i]);count = res[list2[i]] + i;}else if(res[list2[i]] + i == count){ans.push_back(list2[i]);}}}return ans;}
};

284. 窥视迭代器

链接: 窥视迭代器
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题可以看出就是利用遍历进行迭代即可。
代码:

class PeekingIterator : public Iterator {
private:int nextElement;bool flag;
public:PeekingIterator(const vector<int>& nums) : Iterator(nums) {// Initialize any member here.// **DO NOT** save a copy of nums and manipulate it directly.// You should only use the Iterator interface methods.flag = Iterator::hasNext();if(flag){nextElement = Iterator::next();}}// Returns the next element in the iteration without advancing the iterator.int peek() {return nextElement;}// hasNext() and next() should behave the same as in the Iterator interface.// Override them if needed.int next() {int res = nextElement;flag = Iterator::hasNext();if(flag){nextElement = Iterator::next();}return res;}bool hasNext() const {return flag;}
};

287. 寻找重复数

链接: 寻找重复数
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题存在一个重复的数字,我本来的想法是哈希表,但是这个不符合题意。我看了题解,是采用映射,这样就存在了链表,有重复数字的话就是存在环,则这道题就变成了找环链表入扣的问题。我觉得这个很巧妙,感觉跟之前的题不太一样,这个题可以转化为原来的其他题,而不是直接给出。
代码:

class Solution {
public:int findDuplicate(vector<int>& nums) {int slow = 0;int fast = 0;slow = nums[slow];fast = nums[nums[fast]];while(slow != fast){slow = nums[slow];fast = nums[nums[fast]];}int pre1 = 0;int pre2 = slow;while(pre1 != pre2){pre1 = nums[pre1];pre2 = nums[pre2];}return pre1;}
};

135. 分发糖果

链接: 分发糖果
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
这道题我们会发现当前孩子获得糖果的状态只跟左右有关,所以我们进行左遍历和右遍历从而找到能满足当前状态的糖果数。不过这个思路也不是我想的,我是看了解析才得到的,只能说我的能力有待提高而且这个思路真的很巧妙,官方题解提到的常数空间遍历,我觉得也是依据这种状态得到的。
代码:

class Solution {
public:int candy(vector<int>& ratings) {int count = 0;vector<int> left(ratings.size(),1);for(int i = 1; i < ratings.size(); i++){if(ratings[i] > ratings[i-1]) left[i] = left[i-1]+1;}vector<int> right(ratings.size(),1);count = max(left[ratings.size()- 1],right[ratings.size()- 1]);for(int i = ratings.size()- 2; i >= 0 ; i--){if(ratings[i] > ratings[i+1]) right[i] = right[i+1]+1;count += max(left[i],right[i]);}return count;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2868517.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

居民健康监测小程序|基于微信小程序的居民健康监测小程序设计与实现(源码+数据库+文档)

居民健康监测小程序目录 目录 基于微信小程序的居民健康监测小程序设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2、健康科普管理 5.3公告类型管理 3、论坛信息管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推…

详解命令docker run -d --name container_name -e TZ=Asia/Shanghai your_image

docker run 是Docker的主要命令&#xff0c;用于从镜像启动一个新的容器。下面详细解释并举例说明 -d, --name, -e TZ 参数的用法&#xff1a; -d 或 --detach&#xff1a; 这个标志告诉Docker以守护进程&#xff08;后台&#xff09;模式运行容器。这意味着当你执行 docker ru…

[数据集][目标检测]智能手机屏幕缺陷检测数据集VOC+YOLO格式1200张3类别油斑划痕两点三类

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;1200 标注数量(xml文件个数)&#xff1a;1200 标注数量(txt文件个数)&#xff1a;1200 标注…

‘pro‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

https://blog.csdn.net/weixin_48877626/article/details/135308016https://blog.csdn.net/weixin_48877626/article/details/135308016

一文搞懂分布式事务解决方案

前言 在当今的分布式系统中&#xff0c;分布式事务管理是一个关键挑战。在面对跨多个服务的复杂业务流程时&#xff0c;确保数据一致性和事务的原子性变得至关重要。本文将深入探讨分布式事务的概念、原理、实现方式以及在Java领域的应用。 什么是分布式事务 分布式事务是指涉…

【Javascript编程实操06】1、反转数组和字符串 2、将二维数组转一维数组

前言 1、反转数组和字符串 代码&#xff1a; 实现效果&#xff1a; 2、将二维数组转一维数组 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次主要是针对Javascript阶段的字符串与数组的实操练习&#xff0c;共有2个实操&#xff0c;大家可以在实操的过程中更加深…

阅读 - 二维码扫码登录原理

在日常生活中&#xff0c;二维码出现在很多场景&#xff0c;比如超市支付、系统登录、应用下载等等。了解二维码的原理&#xff0c;可以为技术人员在技术选型时提供新的思路。对于非技术人员呢&#xff0c;除了解惑&#xff0c;还可以引导他更好地辨别生活中遇到的各种二维码&a…

2024批量导出公众号所有文章生成目录,这下方便找文章了

公众号历史文章太多&#xff0c;手机上翻起来太费劲&#xff0c;怎么快速找到某一天的文章呢&#xff1f;比如深圳卫健委这个号从2014到2024发布近万篇文章。 公众号历史文章太多&#xff0c;手机上翻起来太费劲&#xff0c;怎么快速找到某一天的文章&#xff1f; 如果要找2020…

主干网络篇 | YOLOv8更换主干网络之ShuffleNetV2(包括完整代码+添加步骤+网络结构图)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。ShuffleNetV2是一种轻量级的神经网络架构&#xff0c;用于图像分类和目标检测任务。它是ShuffleNet的改进版本&#xff0c;旨在提高模型的性能和效率。ShuffleNetV2相比于之前的版本&#xff0c;在保持模型轻量化的同时&am…

用户视角的比特币和以太坊外围技术整理

1. 引言 要点&#xff1a; 比特币L2基本强调交易内容的隐蔽性&#xff0c;P2P交易&#xff08;尤其是支付&#xff09;成为主流&#xff0c;给用户带来一定负担&#xff08;闪电网络&#xff09;在以太坊 L2 中&#xff0c;一定程度上减少了交易的隐蔽性&#xff0c;主流是实…

【Linux进程状态】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、直接谈论Linux的进程状态 看看Linux内核源代码怎么说 1.1、R状态 -----> 进程运行的状态 1.2、S状态 -----> 休眠状态(进程在等待“资源”就绪) 1.3、T状…

突破编程_前端_JS编程实例(工具栏组件)

1 开发目标 工具栏组件旨在模拟常见的桌面软件工具栏&#xff0c;所以比较适用于 electron 的开发&#xff0c;该组件包含工具栏按钮、工具栏分割条和工具栏容器三个主要角色&#xff0c;并提供一系列接口和功能&#xff0c;以满足用户在不同场景下的需求&#xff1a; 点击工具…

Vue+SpringBoot打造音乐平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台&#xff0c;包含了音乐…

tigramite教程(五)使用TIGRAMITE 进行自助聚合和链接置信度量化

使用TIGRAMITE 进行自助聚合和链接置信度量化 自助聚合&#xff08;Bagging&#xff09;和置信度估计例子数据生成模型基本的PCMCIBagged-PCMCI使用优化后的pc_alpha进行自举聚合使用优化的pc_alpha进行CMIknn的自举聚合 TIGRAMITE是一个用于时间序列分析的Python模块。它基于P…

如何批量获取公众号所有文章的阅读数点赞数和留言数导出excel?

如何批量获取公众号所有文章的阅读数点赞数和留言数导出excel&#xff1f;我写了个脚本批量抓取&#xff0c;导出的excel文章数据包含文章日期&#xff0c;文章标题&#xff0c;文章链接&#xff0c;文章简介&#xff0c;文章作者&#xff0c;文章封面图&#xff0c;是否原创&a…

《圣斗士星矢:纵横宇宙》(上)AI制作真人版大电影

《圣斗士星矢&#xff1a;纵横宇宙》&#xff08;上&#xff09;AI制作真人版大电影 平行宇宙&#xff0c;黑暗来袭&#xff0c;十二件黄金圣衣合体成为究极秘密武器&#xff01; 《圣斗士星矢&#xff1a;纵横宇宙》&#xff08;上&#xff09;电影开场&#xff0c;星矢等一众…

网络通信与网络协议

网络编程是指利用计算机网络实现程序之间通信的一种编程方式。在网络编程中&#xff0c;程序需要通过网络协议(如 TCP/IP)来进行通信&#xff0c;以实现不同计算机之间的数据传输和共享。在网络编程中&#xff0c;通常有三个基本要素 IP 地址:定位网络中某台计算机端口号port:定…

Nginx高级技术: 代理缓存配置

一、缓存说明 Nginx缓存&#xff0c;Nginx 提供了一个强大的反向代理和 HTTP 服务器功能&#xff0c;同时也是一个高效的缓存服务器。一般情况下系统用到的缓存有以下三种&#xff1a; 1、服务端缓存&#xff1a;缓存存在后端服务器&#xff0c;如 redis。 2、代理缓存&#…

6.【Linux】进程间通信(管道命名管道||简易进程池||简易客户端服务端通信)

介绍 进程间通信的方式 1.Linux原生支持的管道----匿名和命名管道 2.System V-----共享内存、消息队列、信号量 3.Posix------多线程、网路通信 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程 资源共享&#xff1a;多个进程之间共享同样的资源。…

UE4_调试工具_绘制调试球体

学习笔记&#xff0c;仅供参考&#xff01; 效果&#xff1a; 步骤&#xff1a; 睁开眼睛就是该变量在此蓝图的实例上可公开编辑。 勾选效果&#xff1a;