【力扣 - 最长连续数组】

题目描述

给定一个未排序的整数数组 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

提示:

0 <= nums.length <= 10^5

-10^9 <= nums[i] <= 10^9

题解

思路

先排序再比较计数;
如果相邻两数差一计数,如果相等进入下一层循环判断;
如果后面数与前一个数既不相等又不比前一个多一,重值计数为1.

代码

int cmp(const void* a, const void* b)
{// Custom comparison function for qsort to sort integers in ascending orderreturn (long long)*(int*)a - (long long)*(int*)b;
}int longestConsecutive(int* a, int n)
{// Check for edge casesif (a == NULL || n == 0) {return 0;}/* The  qsort  function in C is used to sort an array in ascending order. * It takes the following parameters: * base: Pointer to the array to be sorted. * nmemb: Number of elements in the array. * size: Size in bytes of each element in the array. * compar: Pointer to a comparison function that determines the order of elements. * The comparison function ( compar ) should return an integer less than, * equal to, or greater than zero if the first argument is considered to be * respectively less than, equal to, or greater than the second argument. * void qsort(void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));*/// Sort the input array 'a' in ascending orderqsort(a, n, sizeof(int), cmp);int t = a[0]; // Initialize 't' with the first element of the sorted arrayint cnt = 1; // Initialize 'cnt' to keep track of the current consecutive sequence lengthint max = 1; // Initialize 'max' to keep track of the maximum consecutive sequence length// Iterate through the sorted array to find the longest consecutive sequencefor (int i = 1; i < n; i++) {if (a[i] == t) {// If the current element is equal to the previous element, skip itcontinue;} else if ((long long)a[i] - t == 1LL) {// If the current element is consecutive to the previous elementt = a[i]; // Update 't' to the current elementcnt++; // Increment the consecutive countif (max < cnt) {max = cnt; // Update 'max' if a longer consecutive sequence is found}} else {// If the current element is not consecutive to the previous elementt = a[i]; // Update 't' to the current elementcnt = 1; // Reset the consecutive count}}return max; // Return the maximum consecutive sequence length
}

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

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

相关文章

Linux命令:uniq命令和wc命令

目录 1 uniq命令1.1 uniq简介1.2说明1.3案例1、默认输出2、输出重复行3、比较一行中的部分字符4、忽略大小写5、只显示唯一的行 2.4 uniq和sort命令配合使用1、文本统计2、统计IP连接数并排序 2 wc命令2.1 wc简介2.2 说明2.3 案例1、默认输出2、输出字节、字符数、单词数 总结 …

案例介绍:汽车维修系统的信息抽取技术与数据治理应用(开源)

一、引言 在当今汽车产业的快速发展中&#xff0c;软件已经成为提升车辆性能、安全性和用户体验的关键因素。从车载操作系统到智能驾驶辅助系统&#xff0c;软件技术的进步正在重塑我们对汽车的传统认知。我有幸参与了一个创新项目&#xff0c;该项目专注于开发和集成先进的汽…

关于 svg path 路径坐标 精度误差问题

<svg width"2838.739990" height"2482.179932" viewBox"0 0 2838.74 2482.18" fill"none" xmlns"http://www.w3.org/2000/svg" xmlns:xlink"http://www.w3.org/1999/xlink"><path id"矢量 12"…

原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobRegistryHelper 初始化 (4)

文章目录 前言一、JobRegistryHelper 作用&#xff1a;二、JobRegistryHelper 源码介绍&#xff1a;2.1 初始化start() 方法&#xff1a;2.1.1 registryOrRemoveThreadPool 执行器注册和移除&#xff1a;2.1.2 registryMonitorThread 执行器注册监控线程&#xff1a; 2.2 toSto…

折线图实现柱状阴影背景的demo

这个是一个由官网的基础折线图实现的流程&#xff0c;将涉及到的知识点附上个人浅薄的见解&#xff0c;源码在最后&#xff0c;需要的可自取。 折线图 成果展示代码注解参数backgroundColordataZoomlegendtitlexAxisyAxisgridseries 源码 成果展示 官网的基础折线图&#xff…

猫耳语音下载(mediadown)

猫耳语音下载(mediadown) 一、介绍 猫耳语音下载,能够帮助你下载猫耳音频节目。如果你是会员,它还能帮你下载会员节目。 二、下载地址 下载:猫耳语音下载(mediadown) 百度网盘下载:猫耳语音下载(mediadown) 三、安装教程 将下载的文件解压到D:\xibinhui,D:\Pr…

Unity RectTransform·屏幕坐标转换

RectTransform转屏幕坐标 分两种情况 Canvas渲染模式为Overlay时&#xff0c;使用此方式 public Rect GetScreenCoordinatesOfCorners(RectTransform rt) {var worldCorners new Vector3[4];rt.GetWorldCorners(worldCorners);var result new Rect(worldCorners[0].x,world…

Manomotion 实现AR手势互动-解决手势无效的问题

之前就玩过 Manomotion &#xff0c;现在有新需求&#xff0c;重新接入发现不能用了&#xff0c;不管什么办法&#xff0c;都识别不了手势&#xff0c;我记得当初是直接调用就可以的。 经过研究发现&#xff0c;新版本SDK改了写法。下边就写一下新版本的调用&#xff0c;并且实…

好书推荐 《Excel函数与公式应用大全for Excel 365 Excel 2021》

一.基本介绍 1.什么是 Excel? Excel 是微软公司开发的一款电子表格软件&#xff0c;是 Microsoft Office 套件的一部分。它被广泛用于数据处理、分析、可视化和管理等方面。Excel 提供了丰富的功能&#xff0c;使用户能够创建、编辑、存储和分享各种类型的数据表格。 2.Exc…

Golang Channel 详细原理和使用技巧

1.简介 Channel(一般简写为 chan) 管道提供了一种机制:它在两个并发执行的协程之间进行同步&#xff0c;并通过传递与该管道元素类型相符的值来进行通信,它是Golang在语言层面提供的goroutine间的通信方式.通过Channel在不同的 goroutine中交换数据&#xff0c;在goroutine之间…

代码随想录Day66 | 图的DFS与BFS

代码随想录Day66 | 图的DFS与BFS DFS797.所有可能的路径无向图和有向图的处理 BFS200.岛屿数量 DFS 文档讲解&#xff1a;代码随想录 视频讲解&#xff1a; 状态 本质上就是回溯算法。 void dfs(参数) {if (终止条件) {存放结果;return;}for (选择&#xff1a;本节点所连接的…

『运维备忘录』之 Shell 内置命令大集合

前言 在 Shell 中&#xff0c;有许多内置命令可用于执行各种任务&#xff0c;包括文件操作、进程管理、环境变量设置等。本文将详细介绍一些常见的Shell内置命令及其示例用法。 命令描述alias创建命令别名&#xff0c;用于将命令或命令组合关联到用户自定义名称bg将作业放入后…

Qt textBrowser的Html相关

Qt textBrowser的Html相关 Qt textBrowser的Html相关 Qt textBrowser的Html相关 一开始就想要一个简单的功能&#xff0c;点一下按钮&#xff0c;添加的文字居中显示&#xff0c;再点一下按钮&#xff0c;添加的文字变更颜色居右显示。 但是&#xff1a; ui->textEdit-&g…

WordPress免费的远程图片本地化下载插件nicen-localize-image

nicen-localize-image&#xff08;可在wordpress插件市场搜索下载&#xff09;&#xff0c;是一款用于本地化文章外部图片的插件&#xff0c;支持如下功能&#xff1a; 文章发布前通过编辑器插件本地化 文章手动发布时自动本地化 文章定时发布时自动本地化 针对已发布的文章…

python类的属性、方法、静态方法、静态方法类内部的调用、直接调用与实例化调用

设计者&#xff1a;ISDF工软未来 版本&#xff1a;v1.0 日期&#xff1a;2024/3/4 class Restaurant:餐馆类def __init__(self,restaurant_name,cuisine_type):#类的属性self.restaurant_name restaurant_nameself.cuisine_type cuisine_type# self.stregth_level 0def desc…

基于机器学习的密码强度检测

项目简介 利用机器学习对提供的数据集预测用户输入的密码是否为弱密码。 原始数据集只包含关于弱密码的信息&#xff0c;并没有包含强密码的数据或分类器&#xff0c;这意味着模型无法学习到强密码的规律!!! 我之所以这样设计这个示例&#xff0c;其目的是为了向你展示模型的…

python65-Python的循环之for表达式

for表达式用于利用其他区间、元组、列表等可迭代对象创建新的列表。for 表达式的语法格式如下: [表达式 for 循环计数器 in 可迭代对象] 从上面的语法格式可以看出,for表达式与普通for循环的区别 1)在for关键字之前定义一个表达式,该表达式通常会包含循环计数器 2)for …

@RestController和@Controller的区别

RestController和Controller是Spring框架中两个常用的注解&#xff0c;用于标识Controller类 1.Controller&#xff1a;使用Controller注解标记的类是一个典型的MVC控制器&#xff08;controller&#xff09;&#xff0c;用于处理请求并返回视图。通常在该类的方法上使用Reque…

alzet供应商你值得拥有

在20世纪70年代&#xff0c;ALZE公司研发出来一款巧妙的药物输送装置——Alzet osmotic pump。这款产品如胶囊般精致小巧&#xff0c;它既有胶囊的外表&#xff0c;也具有胶囊的作用。在Alzet osmotic pump中藏有可以装配药物溶液的空间。此款胶囊泵如同一个小投递员&#xff0…

Vue整合three.js 环境从头搭建 详细教程

目录 一、创建Vue项目 二、搭建three.js 三、引入扩展库OrbitControls 首先我们要有nodejs环境,这里我们用的是17.1.0版本。 一、创建Vue项目 第一步:终端命令创建vue项目 npm create vite@latest