力扣题目训练(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.mzph.cn/news/749331.shtml

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

相关文章

UE5数字孪生系列笔记(二)

智慧城市数字孪生系统 制作流云动画效果 首先添加一个图像在需要添加流云效果的位置 添加动画效果让其旋转 这个动画效果是程序开始就要进行的&#xff0c;所以要在EventConstruct中就可以启动这个动画效果 添加一个一样的图像在这里&#xff0c;效果是从此处进行放大消散 添…

C语言---指针的两个运算符:点和箭头

目录 点&#xff08;.&#xff09;运算符箭头&#xff08;->&#xff09;运算符需要注意实际例子 C语言中的指针是一种特殊的变量&#xff0c;它存储了一个内存地址。点&#xff08;.&#xff09;和箭头&#xff08;->&#xff09;是用于访问结构体和联合体成员的运算符。…

promise和await/async区别?

Promise 是 JavaScript 中用于处理异步操作的对象&#xff0c;它代表一个异步操作的最终完成或失败&#xff0c;以及其结果值。而 async/await 是 ES8&#xff08;ECMAScript 2017&#xff09;引入的一种处理异步操作的方法&#xff0c;基于 Promise 实现的语法糖&#xff0c;使…

运行gazebo机器人模型没有cmd_vel话题

运行赵虚左教程代码出现上诉问题 roslaunch urdf02_gazebo demo03_env.launch 原因&#xff1a;缺少某个包 在工作空间catkin_make编译发现报错 解决&#xff1a; sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control 下载后再次运行launch文件…

Codeforces Round 931(div2)||ABC

A-Too Min Too Max 题意 对一个数组&#xff0c;找到索引 ( i , j , k , l ) (i,j,k,l) (i,j,k,l)使得 ∣ a i − a j ∣ ∣ a j − a k ∣ ∣ a k − a l ∣ ∣ a l − a i ∣ |a_i-a_j||a_j-a_k||a_k-a_l||a_l-a_i| ∣ai​−aj​∣∣aj​−ak​∣∣ak​−al​∣∣al​−…

60种常用可视化图表的使用场景——(下)

文章目录 31、径向柱图 32、热图 33、散点图 34、气泡图 35、气泡地形图 36、地区分布图 37、点示地图 38、连接地图 39、流向地图 40、甘特图 41、箱形图 42、子弹图 43、蜡烛图 44、跨度图 45、卡吉图 46、美国线 47、弦图 48、非彩带弦图 49、树形图 50、流程图 51、脑力激荡…

Volume优化

低效volume影响 解算时间&#xff1b;存储大小&#xff1b;渲染时间&#xff1b;服务器I/O&#xff1b;迭代次数&#xff1b;影响队友&#xff1b; 降低volume数据 体素精度分辨率&#xff1b;根据离相机的远近设置不同的分辨率&#xff1b;数据位数&#xff1b;删除不需要的数…

python知识点总结(一)

这里写目录标题 一、什么是WSGI,uwsgi,uWSGI1、WSGI2、uWSGI3、uwsgi 二、python中为什么没有函数重载&#xff1f;三、Python中如何跨模块共享全局变量?四、内存泄露是什么?如何避免?五、谈谈lambda函数作用?六、写一个函数实现字符串反转&#xff0c;尽可能写出你知道的所…

react中使用腾讯地图

腾讯文档 申请好对应key 配置限额 https://lbs.qq.com/service/webService/webServiceGuide/webServiceQuota 代码 用到的服务端接口 1.逆地址解析 2.关键词输入提示 import React, { Component } from react; import styles from ./map.less import { Form, Row, Col, I…

Go 语言中的 Cond 机制详解

概述 在并发编程中&#xff0c;条件同步是一个常见的需求。Go 语言提供了 sync.Cond 类型来满足这一需求。sync.Cond 基于互斥锁&#xff08;sync.Mutex&#xff09;提供了条件变量的同步机制&#xff0c;允许一组 goroutine 在满足某个条件时进行阻塞等待&#xff0c;或者在条…

python接口自动化之DDT数据驱动测试

一、简单介绍 DDT&#xff08;Date Driver Test&#xff09;&#xff0c;所谓数据驱动测试&#xff0c;简单来说就是由数据的改变从而驱动自动化测试的执行&#xff0c;最终引起测试结果的改变。通过使用数据驱动测试的方法&#xff0c;可以在需要验证多组数据测试场景中&…

C#混淆心得

C#混淆心得 近期遇到混淆C#代码的需求&#xff0c;在网上找了很多办法&#xff0c;在此记录一下。 混淆的本质就是让代码变丑&#xff0c;让别人看不懂。 为什么要混淆&#xff1a; 1.保护核心代码 可以在一定程度上避免别人偷代码&#xff0c;从而保护重要的部分&#xf…

postman---postman参数化

我们在做接口测试的过程中&#xff0c;都会遇到同一个接口不同的数据&#xff0c;每次去一个个填写数据就太麻烦了&#xff0c;今天我们一起学习下如何通过postman进行参数化 一、参数化 参数化就是1个接口请求不同的数据&#xff0c;我们可以通过把请求的数据放入到一个文件…

滑动窗口和螺旋矩阵

209. 长度最小的子数组 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c;返回…

LInux 进程替换(理解系统调用)

目录 一、替换原理 二、替换函数 1、exec函数 2、命名理解 3、返回值 4、使用execl/lp、execv/vp 5、执行自定义命令 Makefile编译多个文件 命令行程序mycmd.c 传入自己的可执行文件 7、子进程都继承父进程环境变量 8、execle/ve修改子进程环境变量 9、exece函数为…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等&#xff0c;并不能覆盖所有的需求&#xff0c;我们之前讲过很少用到的因果图法&#xff0c;下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口&#xff0c;每个…

SpringBoot 过滤器

SpringBoot 过滤器简介 SpringBoot 是一种广泛使用的 Java 框架&#xff0c;用于创建微服务和企业级应用程序。它提供了许多功能&#xff0c;包括用于处理 HTTP 请求和响应的过滤器。在 SpringBoot 中&#xff0c;过滤器是一种组件&#xff0c;它允许您在请求到达控制器之前和…

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

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

wsl-oraclelinux 安装 cuda

wsl-oraclelinux 安装 cuda 1. 安装 cuda2. 安装 cuDNN3. 配置环境变量 1. 安装 cuda wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run sudo sh cuda_12.4.0_550.54.14_linux.run2. 安装 cuDNN sudo dnf …

第十四届蓝桥杯省赛真题 Java C 组【原卷】

文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 求和试题 B: 分糖果试题 C: 三国游戏试题 D : \mathrm{D}: D: 平均试题 E \mathrm{E} E : 填充试题 F : \mathrm{F}: F: 棋盘试题 G: 子矩阵试题 H: 公因数匹配试题 I: 异或和之差试题 J : \mathrm{J}: J: 太阳 发现宝…