LeetCode热题100|128.最长连续序列,283.移动零

Leetcode Top100题目和答案(Java完整版 面试必备) 最近忙着准备春招,复习完这个又复习那个。不过还是忙里偷闲,把剑指Offer这66道题目重新刷了一遍,收获还是很大的,下面贴出答案,又不懂的可以给我留言,博主会及时解答。 我的github 准备把春招复习的知识都整理到github上,一边是自己做个总结,一边也能供大家参考 ——leetcode数据库 19道题 ——剑指Offer 66道题 以下摘自leetcode Top100精选题目 文章目录1.... 阅读详情

128.最长连续序列

题目链接:128. 最长连续序列 - 力扣(LeetCode)

这里要求的一个乱序的数组里连续数字的个数,比如【100 ,4,200,1,3,2】

里面连续的数字就是【1,2,3,4】返回4

可以用排序,就是把他排成【1,2,3,4,100,200】然后挨个遍历,如果是相同的数就跳过,连续的数就计数,不连续的数就重置max_length

但是排序因为用到了sort最少也要O(nlogn)的复杂度,所以考虑哈希表O(1)

class Solution {//排序的做法
public:
    int longestConsecutive(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        int max_length=1;
        int current_length=1;
        for(int i=0;i<nums.size();i++){
            if(i>0&&nums[i]==nums[i-1]){
                continue;//相同的数
            }
            else if(i>0&&nums[i]==nums[i-1]+1){
                current_length++;//连续的数
            }
            else{
                max_length=1;//不连续的数,重置最大连续数的值
            }
            max_length=max(max_length,current_length);
        }
        return max_length;
    }
};

哈希表的做法就是先把他们放到一个set集合里面,这里可以进行去重,虽然去不去重不影响【1,1,2】和【1,2】因为算出来的最长连续子序列都是2,只是有点浪费资源,顺便去一下也可以。

这里的思路就是

1、把所有数组存到哈希组合

2、从起点扩展序列

        如果【100 ,4,200,1,3,2】里面 遍历到3就会跳过,因为3-1=2,2在集合里面

        遍历到100就会进入到条件里面,然后就会依次寻找他的连续序列,比如这里会找101,发现没有就只好跳过了

 3、更新最长连续序列的值

class Solution {//哈希做法
public:
    int longestConsecutive(vector<int>& nums) {
        unordered_set<int> num_set(nums.begin(),nums.end());
        int max_length=0;
        for(int num:nums){
            if(num_set.find(num-1)==num_set.end()){//数的前一位不在集合里,该数是扩展起点
                int current_length=1;
                int current_num=num;
                while(num_set.find(current_num+1)!=num_set.end()){//该数的下一位在集合里
                    current_length++;
                    current_num++;//更新该数
                }
                max_length=max(current_length,max_length);//更新最长连续序列
                
            }
        }
        return max_length;
    }
};

283.移动零

题目链接:283. 移动零 - 力扣(LeetCode)

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int left=0;
        for(int right=0;right<nums.size();right++){
            if(nums[right]){
                swap(nums[right],nums[left]);
                left++;
            }
        }
    }
};

用的是双指针法,过程就是: 

 right=0时,一进来,nums[right]为0,不进入if语句,每轮right照常++

right=1时,nums[right]不为0,进入if语句,交换left指向和right指向的值,left指针++

 

每轮right照常++ 

right=2时,nums[right]为0,不进入if语句,每轮right照常++

right=3时,nums[right]不为0,进入if语句,交换 交换left指向和right指向的值,left指针++

每轮right照常++ 

right=4时,nums[right]不为0, 进入if语句,交换 交换left指向和right指向的值,left指针++

right照常++为5,退出循环 

DSP28335学习笔记——McBSP配置为SPI 由于28335硬件外设上只有一个SPI接口,所以当SPI接口不够用时,可以将McBSP配置为SPI接口。 参考28335的数据手册,当DSP为主机时,配置McBSP为SPI所用到的接线如下图所示。 另外总结一些调试过程中的经验。 1.传输数据位数的确定 由RCR1寄存器中的RWDLEN1和XCR1寄存器中的XWDLEN1决定。分别对应着接受和发送的位数,在配置成SPI模式的时候,这 阅读详情

相关推荐

Cadence元件库介绍

Cadence安装完之后,在安装目录下,会有默认自带的一些常用元件库。例如,我的Candece安装目录为: D:\Cadence\Cadence_SPB_17.2-2016 元件库所在目录为: D:\Cadence\Cadence_SPB_17.2-2016\tools\capture\library 各个元件库对应的内容如下: AMPLIFIER.OLB 共 182 个零件,存放模拟放大器 IC,如 CA3280,TL027C,EL4093 等。 ARITHMETIC.OLB 共 182 个零件,存放

年少时的棉花糖 1万+

LeetCode热题100JS(6/100)第一天|128. 最长连续序列|283. 移动零|11. 盛最多水的容器|15. 三数之和

重点是要理解什么情况下开始y++的循环283. 移动零283. 移动零难度:简单刷题状态:1刷双指针不是left right 就是slow fast11. 盛最多水的容器11. 盛最多水的容器难度:中等刷题状态:2刷在灵神题库刷过啦~15. 三数之和题目链接:​​​​​​​15. 三数之和难度:中等刷题状态:2刷else if 那里还真是个坑,,多刷多练吧,查漏补缺。

Alicesflower的博客 1010

若依前后端分离版实战:MQTT集成保姆级教程(含MQTTX测试工具使用)

本文详细介绍了在若依前后端分离架构中集成MQTT协议的完整流程,包括环境搭建、核心配置、安全实践及性能优化。通过MQTTX测试工具的使用和实战代码示例,帮助开发者快速实现物联网场景下的实时通信功能,提升系统稳定性和效率。

weixin_30664051的博客 456

LeetCode热题100(1)

还有一种办法,我们不是把数组排序了吗,那当我找到一组成立的结果时,如果有重复的数字,也是在结果附近,我直接比较附近的数的大小,移动我的 left 指针和 right 指针不就好了;这道题要我们找到数字连续的最长序列,并且时间复杂度为O(N),看了上面几个实例,会发现给的数组是有可能出现重复的数字的,所以我们在找数字连续的最长序列时:应该先去重,把所有元素都扔到哈希表。(1)暴力算法:我们第一眼想到的就是我固定一个数,遍历,再固定一个数,再遍历,然后求和,这样的话时间复杂度肯定是O(N3)

bugu___的博客 426

如何在项目中集成bpmn-process-designer

文章目录一、bpmn-process-designer是什么?二、使用步骤1.将下面地址的代码下载到本地2.替换dependencies和devDependencies3.拷贝package目录4.在main.js引入代码5.拷贝src5.拷贝App.vue代码注意事项 一、bpmn-process-designer是什么? bpmn-process-designer是一个基于 bpmn.js,Vue 2.x 和 ElementUI 开发的流程设计器(前端部分),支持监听器,扩展属性,表单等配置,可自由扩展

weixin_43550766的博客 9453

Apache Jena SPARQL 查询完全指南:入门与实战案例

本文介绍了使用Apache Jena执行SPARQL查询的完整指南。SPARQL是用于RDF数据的标准查询语言,在知识图谱领域地位相当于SQL。教程从基础开始,涵盖创建模型、加载数据以及执行各种查询类型。特别强调了WHERE子句中的图模式匹配机制,通过Mermaid图直观展示数据图与查询图的匹配过程。文章还对比了变量命名规范(?和$前缀),解释了SPARQL引擎如何通过变量绑定实现数据检索。通过Hello World示例演示了完整查询流程,为开发者提供了SPARQL的实用入门指导。

Lincoln 的专栏 1373

力扣热题100(方便自己复习,自用)

热题一百

LXY999222的博客 6283

C++ 小游戏程序 (共七款)

C++编程小游戏_闪耀的天狼星的博客-优快云博客_游戏c++C++跑酷小游戏_闪耀的天狼星的博客-优快云博客。好玩的c++编程小游戏,共六款。代码】C++跑酷小游戏。

小天狼星_布莱克 的博客 3万+

LeetCode 热题 HOT 100 题解(仅记录解题思路)

由于数组中只有一个元素出现一次,其余元素都出现两次,因此用集合中的元素之和的两倍减去数组中的元素之和,剩下的数就是数组中只出现一次的数字。遍历数组中的每个数字,如果集合中没有该数字,则将该数字加入集合,如果集合中已经有该数字,则将该数字从集合中删除,最后剩下的数字就是只出现一次的数字。指针p1在头结点处,指针p2在头结点的next处,然后p1每次移动1格,p2则走2步,若在其中一个进入null之前两者指向同一结点,则代表有环。使用双指针,左指针指向当前已经处理好的序列的尾部,右指针指向待处理序列的头部。

a131529的博客 1万+

OpenCode + Oh My OpenCode:打造你的终极AI编程团队(OpenCode新手入门指南)

本文详细介绍了开源终端AI编程助手 OpenCode 的完整配置教程 🖥️,从安装、AI模型配置到增强插件 Oh My OpenCode 的部署一应俱全。支持 Claude、ChatGPT、Gemini 多模型切换 🤖,还能实现多AI智能体协作开发。步骤清晰适合新手 📝,想在终端用AI写代码的开发者不要错过 ✨

XiaoqiangClub的博客 1万+

2026.2.11:ollama api推理GLM-OCR模型识别图片

本文介绍了使用Ollama API调用GLM-OCR模型进行图片文字识别的过程。首先通过ollama pull glm-ocr:latest命令拉取模型,然后使用Python脚本调用API接口。代码示例展示了如何发送包含图片路径的请求,并处理返回的识别结果,支持文本、公式和表格三种识别模式。运行结果展示了模型对输入图片的识别效果,为开发者提供了便捷的OCR解决方案。

拥抱具身智能,昇腾Ascend C 365

【LeetCode Solutions】LeetCode 热题 100 题解(1 ~ 5)

【LeetCode Solutions】LeetCode 热题 100 题解(1 ~ 5)

一只快乐的小蒟蒻~ 1321

MIPI D-PHY TX 一致性测试实例解析 Part 01 续

本文为MIPI D-PHY TX一致性测试实例解析part01章节的第二部分

一只豌豆象的博客 6042

Leetcode热题100道

给定一个整数数组 和一个整数目标值 ,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1: 示例 2: 示例 3: 字母异位词分组_49 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例 1: 示例 2: 示例 3: 将每串字符串的字符进行排序后作为key,然后放到对应的v

枫度柚子 2275

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

力扣热题100--day1

对于 nums 中的元素 x,以 x 为起点,不断查找下一个数 x+1,x+2,⋯ 是否在 nums 中,并统计序列的长度。这个题我自己想解法的话只能想到用两个指针一前一后暴力枚举所有的(i,j)组合,但是在数据量大时会出现超时的问题。不在 → 起点 → 找到 2、3、4 → 连续长度 = 4(执行完while此时y=5,因此长度=y-x)如果是起点的话,使用while循环来检查x+1,x+2,...是否存在,直到找不到。例如:输入:[100, 4, 200, 1, 3, 2]的题解,还是一知半解。

weixin_58753945的博客 698

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

力扣热题100再刷

本文摘要总结了LeetCode上160道经典算法题解,涵盖数据结构与算法核心知识点。主要内容包括: 数据结构:链表(相交/回文/反转)、二叉树(翻转/遍历/直径)、栈(最小栈/有效括号)、堆(前K高频)、字典树、并查集等。 算法思想: 动态规划:打家劫舍系列、股票买卖、编辑距离、路径问题等典型DP场景 双指针:接雨水、盛水容器、移动零等高效解法 回溯搜索:组合总和、子集生成、括号生成等模板应用 贪心算法:跳跃游戏、任务调度等最优策略 分治递归:二叉树问题、归并排序等分治思路 高频题型: 数组操作(旋转图像、

fancyxiaoxiao的博客 1032

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

《LeetCode 热题 100》每日一题

力扣最受刷题发烧友欢迎的 100 道题

m0_68788727的博客 1160

力扣hot100速通(7.9)|49.字母异位词分组 128.最长连续序列 283.移动零 11.盛最多水的容器 42.接雨水

直接看答案了,思路是用字典,排序后的字符串作为key,排序前的作为value,一步步加入就好了。

qq_46000007的博客 596

LeetCode热题100plus

(简单)给定一个整数数组nums和一个整数目标值target,请你在该数组中找出 和为目标值target的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。你可以按任意顺序返回答案。方法一(自己想到):暴力枚举,两次循环遍历所有相加的情况。

qq_43751506的博客 3670

LeetCode 热题 100 题解记录

LeetCode Hot 100题个人总结题解,简洁高效,通俗易懂,精选最优解题思路,纯享题解,祝你更快刷题!

愿你有前程可奔赴,亦有青春可回顾 911

LeetCode HOT100刷题笔记(一):哈希表, 双指针

ps:笔记和代码按本人理解整理,重思路

学习记录 1702

leetcode热题HOT100汇总——java题解已完结撒花

为了学习本文捋顺leetcode热题HOT100的汇总 方便自己秋招刷题 仅作刷题笔记使用 感兴趣的小伙伴点一个赞吧。

qq_41810415的博客 9404

力扣HOT100合集

对于当前考虑的元素 nums[i],如果 dp[ j - nums[ i ] ] 为 true,说明可以用前面的元素构成和为 j -nums[ i ] 的子集,那么在加上当前元素 nums[ i ] 的情况下,就可以构成和为 j 的子集,因此 dp[ j ] 更新为 true。这样left往回走会导致错误的结果。最终得到的结果为[[1, 2, 3], [2, 1, 3], [3, 1, 2], [1, 3, 2], [2, 3, 1], [3, 2, 1]],即给定数组[1, 2, 3]的全排列结果。

qq_61504864的博客 5875

LeetCode热题100(C++)

【代码】LeetCode热题100(C++)

weixin_72603751的博客 840

力扣hot100-49、字母易位词分组-128、最长连续序列-283、移动零-11、盛最多水的容器-15、三数之和

思路:将数组放到哈希表中去重;在这个哈希表中,判断当前数值-1是否存在(也就是判断是否为起点),不存在则证明是起点,进入一个循环,不断判断当前数值+1是否存在,存在则序列数+1,不存在则结束。将数组中的字母按照a~z的顺序排序,排序后的字母作为HashMap的一个key,value为一个List,List里存与key相同的值。将字符串转化为字符数组。

2402_83620793的博客 531

【Hot100|4-LeetCode 283. 移动零 】

该解法的核心是双指针分区思想,通过left划分非零区域,i寻找非零元素,用交换实现原地移动。这种思路不仅适用于 “移动零”,还可迁移到类似的「数组分区问题」(如将数组分为奇数和偶数、正数和负数等),是面试中高频考察的基础算法思路。

King_model的博客 925
上一篇: LeetCode热题100题|1.两数之和,49.字母异位词分组
下一篇: 【代码随想录二刷|704.二分查找、27.移除元素、977.有序数组的平方】
mazo_command
博客等级 码龄2年 275粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值