力扣题目训练(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://www.hqwc.cn/news/543639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java NIO浅析

NIO&#xff08;Non-blocking I/O&#xff0c;在Java领域&#xff0c;也称为New I/O&#xff09;&#xff0c;是一种同步非阻塞的I/O模型&#xff0c;也是I/O多路复用的基础&#xff0c;已经被越来越多地应用到大型应用服务器&#xff0c;成为解决高并发与大量连接、I/O处理问题…

区块链技术中的共识机制算法:以权益证明(PoS)为例

引言&#xff1a; 在区块链技术的演进过程中&#xff0c;共识机制算法扮演着至关重要的角色。除了广为人知的工作量证明&#xff08;PoW&#xff09;外&#xff0c;权益证明&#xff08;Proof of Stake&#xff0c;PoS&#xff09;也是近年来备受关注的一种共识算法。 …

SAP CAP篇十五:写个ERP的会计系统吧,Part II

本文目录 本系列文章目标开发步骤数据库表设计初始数据初始数据&#xff1a;AccountCategories初始数据&#xff1a;AccountUsages初始数据&#xff1a;ChartOfAccounts初始数据&#xff1a;AccountSubjects Service 定义生成Fiori AppApp运行 本系列文章 SAP CAP篇一: 快速创…

torch.backends.cudnn.benchmark 作用

相关参数 torch.backends.cudnn.enabled torch.backends.cudnn.benchmark torch.backends.cudnn.deterministictorch.backends.cudnn.benchmark True&#xff1a;将会让程序在开始时花费一点额外时间&#xff0c;为整个网络的每个卷积层搜索最适合它的卷积实现算法&#xff0c…

第五十九回 公孙胜芒砀山降魔 晁天王曾头市中箭-飞桨自然语言处理套件PaddleNLP初探

公孙胜献出八卦阵&#xff0c;宋江用八员大将守阵。项充李衮进入阵里&#xff0c;被抓住了。宋江说久闻大名&#xff0c;来梁山吧。两人说誓当效力到死&#xff0c;希望能先放我们两个回去把樊瑞带来一起。见到樊瑞后把宋江讲义气一说&#xff0c;樊瑞说不可逆天&#xff0c;于…

硬件工程师入门基础知识(零)心法篇

硬件工程师入门基础知识(零)心法篇 1.为什么要当硬件工程师?2.什么是硬件工程师?3.怎么成为合格的硬件工程师?4.优秀的硬件工程师需要具备什么技能和品质?5.硬件工程师的成长路径?6.硬件工程师还有哪些职业可能?1.为什么要当硬件工程师? 很多快要毕业或者刚毕业的同学…

【leetcode-53最大子数组和】

题目&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] …

NCV8705MTADJTCG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述&#xff1a; NCV8705 是一款低噪音、低功耗和低泄漏线性电压稳压器。该器件具有卓越的噪音和 PSRR 规格&#xff0c;适用于使用视频接收器、成像传感器、音频处理器或需要外部洁净电源的任何部件的产品。NCV8705 使用创新的自适应接地电流电路 可确保轻负载调节下的超…

FFmepg--视频编码流程--yuv编码为h264

文章目录 基本概念流程api核心代码 基本概念 YUV格式&#xff1a;是一种颜色编码方式&#xff0c;YUV分别为三个分量&#xff1a;‘Y’是明亮度&#xff0c;也就是灰度值&#xff1b;‘U’和‘V’是色度 YUV格式的分类&#xff1a; planar的YUV格式&#xff1a;先存储planar的…

3.Redis命令

Redis命令 Redis 根据命令所操作对象的不同&#xff0c; 可以分为三大类&#xff1a; 对 Redis 进行基础性操作的命令&#xff0c;对 Key 的操作命令&#xff0c;对 Value 的操作命令。 1.1 Redis 首先通过 redis-cli 命令进入到 Redis 命令行客户端&#xff0c;然后再运行下…

Unity Live Capture 中实现面部捕捉同步模型动画

Unity Face Capture 是一个强大的工具&#xff0c;可以帮助你快速轻松地将真实人脸表情捕捉到数字模型中。在本文中&#xff0c;我们将介绍如何在 Unity Face Capture 中实现面部捕捉同步模型动画。 安装 |实时捕获 |4.0.0 (unity3d.com) 安装软件插件 安装 Live Capture 软件…

openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优

文章目录 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优244.1 统计信息调优244.1.1 统计信息调优介绍244.1.2 实例分析&#xff1a;未收集统计信息导致查询性能差 openGauss学习笔记-244 openGauss性能调优-SQL调优-典型SQL调优点-统计信息调优…