当前位置: 首页 > 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会无故重启或…...

Django(五、视图层)

文章目录 一、视图层1.视图函数返回值的问题2.三板斧的使用结论&#xff1a;在视图文件中写视图函数的时候不能没有返回值&#xff0c;默认返回的是None&#xff0c;但是页面上会报错&#xff0c;用来处理请求的视图函数都必须返回httpResponse对象。 二、JsonReponse序列化类的…...

Git 工作流程、工作区、暂存区和版本库

目录 Git 工作流程 Git 工作区、暂存区和版本库 基本概念 Git 工作流程 本章节我们将为大家介绍 Git 的工作流程。 一般工作流程如下&#xff1a; 克隆 Git 资源作为工作目录。在克隆的资源上添加或修改文件。 如果其他人修改了&#xff0c;你可以更新资源。在提交前查看…...

PLSQL使用技巧

欲善其事&#xff0c;必先利其器&#xff0c;最近研究了一下各种编程工具的使用&#xff0c;发掘了不少新功能&#xff0c;能够大大提升我们日常的工作效率&#xff0c;下面是转载的一篇PLSQL使用技巧&#xff0c;个人感觉很有用&#xff0c;分享一下。 1、PL/SQL Developer记…...

DEC 深度编码聚类函数

2. 辅助目标函数 要使用输入 (bt, groups, embed_dim) 计算 DEC 模型的目标分布&#xff0c;关键部分是使用软分配 q &#xff0c;其形状为 (bt, groups, max_cluster) 。这里&#xff0c; max_cluster 是您要定位的集群数量。当您沿该维度执行聚类时&#xff0c;需要跨 group…...

ubuntu中cuda12.1配置(之前存在11.1版本的cuda)(同时配置两个版本)

ubuntu中cuda12.1配置 由于YOLOv8项目中Pytorch版本需要cuda12.1版本 在官网下载12.1版本的deb包 官网地址 sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt-get update sudo apt-get -y install cuda然后需要修改bashrc文件&#xff08;隐藏文件&#xff09; 添加 exp…...

千兆路由只有200M,原来是模式选择不对,也找到了内网不能通过动态域名访问内部服务的原因

本来1000M的宽带接入的&#xff0c;但是一测试发现只有200M&#xff0c;把电信叼了过来&#xff0c; 一测试发现宽带没问题&#xff0c;网线正常&#xff0c;网卡正常&#xff0c;只有可能是路由器的问题了&#xff0c;尴尬了&#xff0c;赶紧给满意好评放他走。回头好好研究一…...

【10】maven打包报错 spring-boot-maven-plugin 与spring-boot 版本的不一致

报错信息 org/springframework/boot/maven/RepackageMojo has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0 解决方法 是因为pring-boot-mav…...

SQLAlchemy 在 Flask 应用中的使用和最佳实践

SQLAlchemy 在 Flask 应用中的使用和最佳实践 [TOC](SQLAlchemy 在 Flask 应用中的使用和最佳实践) 模型的编写**SQLAlchemy 中建立关联****利用 SQLAlchemy 中的关联进行查询****实现示例** backref与back_populates&#xff1f;**backref反向引用****back_populates后填充** …...

FineReport -问题学习图表设计图表类型-单元格扩展父子格-报表预览

1,问:为什么本地每次预览都要填帐号密码?答:模板认证关闭一下及可 2.单元格扩展与父子格----左父格-扩展方向-箭头往那个方向就往那个方向 1)数据集参数 在定义数据集时,通过使用if函数判断参数的值是否为空,若为空就不过滤参数,若不为空就进行参数过滤。SELECT * FROM…...

微信小程序广告banner、滚动屏怎么做?

使用滑块视图容器swiper和swiper-item可以制作滚动屏&#xff0c;代码如下&#xff1a; wxml: <swiper indicator-dots indicator-color"rgba(255,255,255,0.5)" indicator-active-color"white" autoplay interval"3000"><swiper-ite…...