力扣题目训练(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;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

stm32-编码器测速

一、编码器简介 编码电机 旋转编码器 A,B相分别接通道一和二的引脚&#xff0c;VCC&#xff0c;GND接单片机VCC&#xff0c;GND 二、正交编码器工作原理 以前的代码是通过触发外部中断&#xff0c;然后在中断函数里手动进行计次。使用编码器接口的好处就是节约软件资源。对于频…

老电脑装什么系统流畅

对于一些老旧电脑来说&#xff0c;重装系统是提升电脑性能的最佳选择。那么&#xff0c;老电脑装什么系统流畅呢&#xff1f;推荐Windows 7系统&#xff0c;它对硬件的需求相对较低。配置较低的电脑运行Windows 7可以更好地利用系统资源&#xff0c;提高电脑的运行速度和响应能…

javaweb-maven+HTTP协议+Tomcat+SpringBoot入门+请求+响应+分层解耦

Maven IDEA集成Maven 依赖管理 依赖配置 maven是插件完成对应的工作的~ 哇哇哇maven看完啦~~~~~~ Spring.io Springboot是Spring家族的子项目&#xff0c;可以帮助我们非常快速地构建应用程序&#xff0c;简化开发&#xff0c;提高效率。 RestController请…

因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024

3月14日&#xff0c;以“因聚而生 数智有为”为主题的“华为中国合作伙伴大会2024”在深圳隆重开幕。作为华为的重要合作伙伴和本次大会钻石级&#xff08;最高级&#xff09;合作伙伴&#xff0c;软通动力深度参与本次盛会&#xff0c;携前沿数智化技术成果和与华为的联合解决…

DVWA靶场-CSRF跨站请求伪造

CSRF(跨站请求伪造)简介概念 CSRF&#xff08;Cross—site request forgery&#xff09;&#xff0c;跨站请求伪造&#xff0c;是指利用受害者未失效的身份认证信息&#xff08;cookie&#xff0c;会话等&#xff09;&#xff0c;诱骗其点击恶意链接或者访问包含攻击代码的页面…

AJAX学习(四)

版权声明 本文章来源于B站上的某马课程&#xff0c;由本人整理&#xff0c;仅供学习交流使用。如涉及侵权问题&#xff0c;请立即与本人联系&#xff0c;本人将积极配合删除相关内容。感谢理解和支持&#xff0c;本人致力于维护原创作品的权益&#xff0c;共同营造一个尊重知识…

国产Copilot--通义灵码安装教程

文章目录 在 Visual Studio Code 中安装通义灵码步骤1步骤2步骤3步骤4 参考 在 Visual Studio Code 中安装通义灵码 通义灵码&#xff0c;是一款基于通义大模型的智能编码辅助工具&#xff0c;提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码注释生成、代码解…

Xcode调试Qt 源码

在Mac下使用Xcode 开发Qt程序&#xff0c;由于程序断点或者崩溃后&#xff0c;Qt库的堆栈并不能够正确定位到源码的cpp文件&#xff0c;而是显示的是汇编代码&#xff0c;导致不直观的显示。 加载的其他三方库都是同理。 所以找了攻略和研究后&#xff0c;写的这篇文章。 一&a…

Java_12 杨辉三角 II

杨辉三角 II 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1] 示例 2: 输入: rowIndex 0 输出: [1] 示例 3: 输入: rowIndex 1 输…

供电系统分类详解

一、供电系统分类 电力供电系统一般有5种供电模式&#xff0c;常用的有&#xff1a;IT系统&#xff0c;TT系统&#xff0c;TN系统&#xff0c;其中TN系统又可以分为TN-C&#xff0c;TN-S&#xff0c;TN-C-S。 1、TN-C系统&#xff08;三相四线制&#xff09; 优点: 该系统中…

193基于matlab的基于两轮驱动机器人的自适应轨迹跟踪算法

基于matlab的基于两轮驱动机器人的自适应轨迹跟踪算法&#xff0c;将被跟踪轨迹分段作为跟踪直线处理&#xff0c;相邻离散点之间为一段新的被跟踪轨迹。程序已调通&#xff0c;可直接运行。 193 自适应轨迹跟踪算法 两轮驱动机器人 - 小红书 (xiaohongshu.com)

传输层_TCPUDP

应用层中调用write/sendrecv/read这些系统接口&#xff0c;并没有将数据发送到网络中&#xff0c;而是向下交付到传输层协议&#xff0c;具体什么时候发送数据&#xff0c;由传输层根据一些策略进行数据的实际发送。传输层的主要功能就是负责数据的传输&#xff0c;包括如果数据…

【学习】PyTorch中的nn.Embedding的用法

基本理解 nn.Embedding(num_embeddings, embedding_dim)其中 num_embeddings 是词表的大小&#xff0c;即 len(vocab)&#xff1b;embedding_dim 是词向量的维度。 nn.Embedding()产生一个权重矩阵weight&#xff0c;其shape为&#xff08;num_embeddings, embedding_dim&…

Java代码审计安全篇-反序列化漏洞

前言&#xff1a; 堕落了三个月&#xff0c;现在因为被找实习而困扰&#xff0c;着实自己能力不足&#xff0c;从今天开始 每天沉淀一点点 &#xff0c;准备秋招 加油 注意&#xff1a; 本文章参考qax的网络安全java代码审计和部分师傅审计思路以及webgoat靶场&#xff0c;记录…

Go-知识select

Go-知识select 1. select 的特性1.1 chan读写1.2 返回值1.3 default 2. select 经典使用2.1 永久阻塞2.2 快速检错2.3 限时等待 3. 实现原理3.1 数据结构3.2 实现逻辑3.3 原理总结 4. 总结4.1 大概原理4.2 参数4.3 返回值 一个小活动&#xff1a; https://developer.aliyun.com…

AMRT 3D 数字孪生引擎(轻量化图形引擎、GIS/BIM/3D融合引擎):智慧城市、智慧工厂、智慧建筑、智慧校园。。。

AMRT3D 一、概述 1、提供强大完整的工具链 AMRT3D包含开发引擎、资源管理、场景编辑、UI搭建、项目预览和发布等项目开发所需的全套功能&#xff0c;并整合了动画路径、精准测量、动态天气、视角切换和动画特效等工具。 2、轻量化技术应用与个性化定制 AMRT3D适用于快速开…

openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优

文章目录 openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优243.1 子查询调优243.1.1 子查询背景介绍243.1.2 openGauss对SubLink的优化243.1.3 更多优化示例 openGauss学习笔记-243 openGauss性能调优-SQL调优-典型SQL调优点-子查询调优 SQL调优是一…

Scala--01--简介、环境搭建

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1. Scala简介1.1 Scala是什么&#xff1f;官网&#xff1a; [https://scala-lang.org/](https://scala-lang.org/)官方文档&#xff1a; [https://docs.scala-lang.…

WPF布局、控件与样式

视频来源&#xff1a;https://www.bilibili.com/video/BV1HC4y1b76v/ 布局 常用布局属性 HorizontalAlignment&#xff1a;用于设置元素的水平位置VerticalAlignment&#xff1a;用于设置元素的垂直位置Margin&#xff1a;指定元素与容器的边距Height&#xff1a;指定元素的…

音频提取:分享几个常用方法,简单好用

有时候我们会在视频中发现一首非常好听的歌曲&#xff0c;但是我们并不需要视频本身。 这时&#xff0c;我们可以提取视频中的音频&#xff0c;将其转化为音频文件&#xff0c;然后在任何时间、任何地点进行欣赏。 下面给大家分享几个提取视频中音频的几个方法&#xff0c;供…