当前位置: 首页 > news >正文

力扣学习笔记——128.最长连续序列

题目描述

https://leetcode.cn/problems/longest-consecutive-sequence/description/?envType=study-plan-v2&envId=top-100-liked

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

示例 1:

输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:

输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9

我的答案

class Solution {
public:int longestConsecutive(vector<int>& nums) {if (0==nums.size()){return 0;}std::sort(nums.begin(),nums.end());// for (auto it=nums.begin();it!=nums.end();it++)// {//     std::cout<<*it<<std::endl;// }int max_result=1;int max_result_temp=1;for(int i=nums.size()-1;i>0;--i){// std::cout<<"i="<<i<<std::endl;// std::cout<<"nums[i]="<<nums[i]<<std::endl;// std::cout<<"nums[i-1]="<<nums[i-1]<<std::endl;if(1==(nums[i]-nums[i-1])){max_result_temp++;//std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp>max_result){max_result=max_result_temp;}}else if(0==(nums[i]-nums[i-1])){max_result_temp;//std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp>max_result){max_result=max_result_temp;}}else{// is_consecutive=false;max_result_temp=1;}}return max_result;}
};
#include <iostream>
#include <vector>
#include <algorithm>
#include <iostream>
#include <unordered_map>
#include <string>class Solution
{
public:int longestConsecutive(std::vector<int> &nums){if (0 == nums.size()){return 0;}std::sort(nums.begin(), nums.end());// for (auto it=nums.begin();it!=nums.end();it++)// {//     std::cout<<*it<<std::endl;// }int max_result = 1;int max_result_temp = 1;for (int i = nums.size() - 1; i > 0; --i){// std::cout<<"i="<<i<<std::endl;// std::cout<<"nums[i]="<<nums[i]<<std::endl;// std::cout<<"nums[i-1]="<<nums[i-1]<<std::endl;if (1 == (nums[i] - nums[i - 1])){max_result_temp++;// std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp > max_result){max_result = max_result_temp;}}else if (0 == (nums[i] - nums[i - 1])){max_result_temp;// std::cout<<"max_result_temp="<<max_result_temp<<std::endl;if (max_result_temp > max_result){max_result = max_result_temp;}}else{// is_consecutive=false;max_result_temp = 1;}}return max_result;}
};int main()
{std::vector<int> nums = {100, 4, 200, 1, 3, 2};int result;Solution test1;result = test1.longestConsecutive(nums);std::cout << "result=" << result << std::endl;std::cout << "     " << std::endl;return 0;
}

编译:

g++ 128_最长连续序列.cpp -o main

输出

4

解题思路

先排序,然后倒着循环作差,值为1,则累加,不然重新开始累加,记住要记住最大值,且需要考虑多种边界情况,比如一个数据,没有数据,重复数据等。特别是重复数据。

注意: 后面我会学习排序后去重的C++库函数

知识点

sort库函数使用

这里需要包含头文件

#include <algorithm>

不然找不到头文件
在 C++ 中,你可以使用 头文件中的库函数来进行排序。以下是一些常用的排序函数:

std::sort():对容器或指定范围内的元素进行排序,默认按升序排序。注意:std::sort(),不光能对数字进行排序,还可以对字母进行排序。

#include <algorithm>
#include <vector>int main() {std::vector<int> nums = {5, 2, 8, 1, 9};std::sort(nums.begin(), nums.end());// 输出排序后的结果for (const auto& num : nums) {std::cout << num << " ";}return 0;
}

输出结果:1 2 5 8 9

注意输入为0判断,边界条件判断

输入数组长度为0:

 if (0 == nums.size()){return 0;}

其他优化解题

使用哈希表

相关文章:

力扣学习笔记——128.最长连续序列

题目描述 https://leetcode.cn/problems/longest-consecutive-sequence/description/?envTypestudy-plan-v2&envIdtop-100-liked 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你…...

【git】远程远程仓库命令操作详解

这篇文章主要是针对git的命令行操作进行讲解&#xff0c;工具操作的基础也是命令行&#xff0c;如果基本命令操作都不理解&#xff0c;就算是会工具操作&#xff0c;真正遇到问题还是一脸懵逼 如果需要查看本地仓库的详细操作可以看我上篇文件 【git】git本地仓库命令操作详解…...

算法:穷举,暴搜,深搜,回溯,剪枝

文章目录 算法基本思路例题全排列子集全排列II电话号码和字母组合括号生成组合目标和组合总和优美的排列N皇后有效的数独解数独单词搜索黄金矿工不同路径III 总结 算法基本思路 穷举–枚举 画出决策树设计代码 在设计代码的过程中&#xff0c;重点要关心到全局变量&#xff…...

蓝桥杯 选择排序

选择排序的思想 选择排序的思想和冒泡排序类似&#xff0c;是每次找出最大的然后直接放到右边对应位置&#xff0c;然后将最 右边这个确定下来&#xff08;而不是一个一个地交换过去&#xff09;。 再来确定第二大的&#xff0c;再确定第三大的… 对于数组a[]&#xff0c;具体…...

20. 深度学习 - 多层神经网络

Hi&#xff0c;你好。我是茶桁。 之前两节课的内容&#xff0c;我们讲了一下相关性、显著特征、机器学习是什么&#xff0c;KNN模型以及随机迭代的方式取获取K和B&#xff0c;然后定义了一个损失函数&#xff08;loss函数&#xff09;&#xff0c;然后我们进行梯度下降。 可以…...

短剧小程序:让故事更贴近生活

在当今快节奏的生活中&#xff0c;人们渴望找到一种能够放松身心、缓解压力的方式。短剧小程序正是这样一种贴心的产品&#xff0c;它以简洁、便捷、个性化的特点&#xff0c;让故事更加贴近生活&#xff0c;成为人们茶余饭后的最佳消遣。 一、短剧小程序的魅力 随时随地&…...

前端下载文件重命名

//引入使用 downloadFileRename(url,name.ext) //下载文件并重命名 export function downloadFileRename(url, filename) { function getBlob(url) { return new Promise((resolve) > { const xhr new XMLHttpRequest() xhr.open(GET, url, true) …...

【23真题】厉害,这套竟有150分满分!

今天分享的是23年中国海洋大学946的信号与系统试题及解析。 本套试卷难度分析&#xff1a;22年中国海洋大学946考研真题&#xff0c;我也发布过&#xff0c;若有需要&#xff0c;戳这里自取!平均分为109-120分&#xff0c;最高分为150分满分&#xff01;本套试题内容难度中等&…...

44. Adb调试QT开发的Android程序实用小技巧汇总

1. 说明 使用QT开发Android应用时,如果程序本身出现了问题,很难进行调试。不像在linux或者windows系统中,可以利用QtCreator软件本身进行一些调试,安卓应用一旦在系统中安装后,如果运行中途出现什么BUG,定位问题所在很麻烦。不过,好在有adb这种调试工具可以代替QtCreat…...

nacos集群配置(超完整)

win配置与linux一样&#xff0c;换端口或者换ip&#xff0c;文章采用的 linux不同IP&#xff0c;同一端口 节点ipportnacos1192.168.253.168848nacos2192.168.253.178848nacos3192.168.253.188848 单IP多个端口 1.复制两个&#xff0c;重命名 2.修改 conf目录下的 application…...

无线WiFi安全渗透与攻防(三) 无线信号探测(目前仅kismet)

这里写目录标题 一. kismet1.软件介绍2.软件使用1.查看kali是否链接了无线网卡2.启动kismet3.查看此时的网卡配置4.访问kismet管理界面5.打开图形窗口,第一次使用时,将会进入用户信息设置界面,如下图:6.填写相关用户信息,第一行用户名,第二行密码,第三行重复密码,设置完…...

Flutter的Widget, Element, RenderObject的关系

在Flutter中&#xff0c;Widget&#xff0c;Element和RenderObject是三个核心的概念&#xff0c;它们共同构成了Flutter的渲染流程和组件树的基础。下面简要介绍它们之间的关系&#xff1a; 1.Widget Widget是Flutter应用中的基础构建块&#xff0c;是一个配置的描述&#xf…...

测试员练就什么本领可以让自己狂揽10个offer

最近&#xff0c;以前的一个小徒弟又双叒叕跳槽了&#xff0c;也记不清他这是第几次跳槽了&#xff0c;不过从他开始做软件测试开始到现在已经有2-3年的工作经验了&#xff0c;从一开始的工资8K到现在的工资17K&#xff0c;不仅经验上积累的很多&#xff0c;财富上也实现了翻倍…...

vue中实现图片懒加载的几种方法

Vue-lazyload 是一个基于 Vue.js 的图片懒加载库&#xff0c;它的实现原理是基于 Intersection Observer API。Intersection Observer API 是一种异步观察目标元素与其祖先元素或顶级文档视窗交叉状态的方式。 Vue-lazyload 的实现原理如下&#xff1a; 在需要懒加载的图片元素…...

Axure9基本操作

产品经理零基础入门&#xff08;四&#xff09;Axure 原型图教程&#xff0c;2小时学会_哔哩哔哩_bilibili Axure 9 从入门到精通全集&#xff0c;自学必备_哔哩哔哩_bilibili 1. ① 页面对应页面个数&#xff0c;概要对应每个页面的具体内容 ② 文件类型 ③ 备用间隔改为5分…...

Docker - 网络

Docker - 网络 理解Docker0 # 我们发现这个容器带来网卡&#xff0c;都是一对对的 # evth-pair 就是一对的虚拟设备接口&#xff0c;他们都是成对出现的&#xff0c;一段连着协议&#xff0c;一段彼此相连 # 正因为有了这个特性&#xff0c;evth-pair 充当一个桥梁&#xff0…...

vue、react中虚拟的dom

React中虚拟DOM的例子&#xff1a; 下面是一个使用React创建的简单的计数器组件&#xff1a; import React, { Component } from react;class Counter extends Component {constructor(props) {super(props);this.state {count: 0};}handleClick () > {this.setState({c…...

Elasticsearch:ES|QL 快速入门

警告&#xff1a;此功能处于技术预览阶段&#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题&#xff0c;但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。目前的最新发行版为 Elastic Stack 8.11。 Elasticsearch 查询语言 (ES|QL) 提供了一种强…...

7-1 进步排行榜

7-1 进步排行榜 分数 10 作者 黄龙军 单位 绍兴文理学院 假设每个学生信息包括“用户名”、“进步总数”和“解题总数”。解题进步排行榜中&#xff0c;按“进步总数”及“解题总数”生成排行榜。要求先输入n个学生的信息&#xff1b;然后按“进步总数”降序排列&#xff1b;若…...

解决删除QT后Qt VS Tools中Qt Options中未删除的错误

在Qt VS Tools的Qt Options已经配置好Qt Versions后如果删除QT程序之后会出现Default Qt/Win version任然存在&#xff0c;这是如果再添加一个话就不能出现重名了&#xff0c;如果新建一个其他名字的话其实在vs中还是不能正常运行qt&#xff0c;会出现点击ui文件vs会无故重启或…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...