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

厦门网站设计公司排名衡水网页网站建设

厦门网站设计公司排名,衡水网页网站建设,韩国免费行情网站的推荐理由,上海装修公司排名10大家装公司128. 最长连续序列 中等 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums [100,4,200,…

128. 最长连续序列

中等

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

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

示例 1:

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

  • 0 <= nums.length <= 105

  • -109 <= nums[i] <= 109

第一想法,先预处理一波,可以创建一个数组把存在的数都标记一遍,如:nums = [100,4,200],标记:number[100] = 1, number[4] = 1, number[200] = 1; 然后从最小的数开始遍历到最后一个数,便可确定最大连续数了。但数据范围之大让我退去....(悲哀 为什么没看清题目再动手 白死八百个脑细胞 TOT)

解法一:

啧啧啧,要求O(n)的复杂度,每个数都只能被访问一次。那么我可以将数组中的分为 n 个组,毕竟组是相对有序的,比直接在乱七八糟的原数组里直接做要来的方便。那么要加入某个组的关键是什么?且看题目:【找出数字连续的最长序列】 有序!就是前后最近的元素只差1。一旦断了,那断的那个数你就自己做队长去招募你的队员吧。那该怎么维护一个组呢? 这里组最重要的就是连续数不能断,断了的话你就自己为队长。也就是我只要找到队长就能找到这个队伍所有的成员了。(心机之蛙一直摸你肚子 WOW) key -> 队长。众所周知,队长是开头的,前面是没有元素的。那么如果出现一样的元素怎么办?这样就可能有两个一样的元素带领同一队的元素,出现重复遍历。有没有这样一种数据结构会将重复出现的元素给打掉(如来佛祖与真假美猴王的场景正在攻击我OVO)。有的兄弟有的, Set 出来亮个相。我们只需要从队长开始不断的报数就可以统计该组的元素数量,然后求每个组的max就行了。

代码如下

class Solution {public int longestConsecutive(int[] nums) {// 去重Set<Integer> set = new HashSet<>();for(int i : nums) set.add(i);// 定义元素最多组的数量int maxSize = 0;
​for(int i : set){// 判断该元素是不是连续数开头的那个元素(队长)// 如果是if(!set.contains(i - 1)){int CurrentNumber = i;int CurrentSize = 1;// 只要能找到队员就一直找下去while(set.contains(CurrentNumber + 1)){CurrentNumber ++;CurrentSize ++;}// 结束,进行队员数量结算maxSize = Math.max(maxSize, CurrentSize);}}return maxSize;}
}

时间复杂度 O(n)

执行代码时间 29ms 击败85.29%

解法二:0 <= nums.length <= 105 , 那么 nlogn = 10^7 - 10^8 .只要低于10^9 过的概率还是大的。题目要求:时间复杂度为 O(n) 的算法解决此问题。不管辣 。排序完后硬做就很简单了~~~

class Solution {public int longestConsecutive(int[] nums) {int len=nums.length;if(len==0){return 0;}if(len==1){return 1;}Arrays.sort(nums);int k=1;int max=1;for(int i=1;i<len;i++){if(nums[i]==nums[i-1])continue;if(nums[i]-nums[i-1]==1){k++;max=Math.max(max,k);}else{k=1;}}return max;}
}
http://www.dtcms.com/wzjs/578194.html

相关文章:

  • 明星粉丝网站怎么做wordpress推广码
  • 免费领手机 网站商丘电子商务网站建设
  • 网站推广软文代发舆情监控一般多少钱
  • 甘肃省建设工程安全质量监督管理局网站官网网站app在线生成器
  • 海外域名提示风险网站吗wordpress文章在哪里
  • 科技网站颜色做网站收费 知乎
  • 韩国风格网站杭州推广公司排名
  • 北京比较好的网站开发公司wordpress 收费
  • 淘宝价格网站建设杭州有哪些做网站的公司
  • 网站标题组合fm网站开发
  • 广州易网外贸网站建设类似wordpress的程序
  • 济南微信网站网站开发前端学习
  • 网站建设外包注意事项58企业名录企业黄页
  • 建网站需要买服务器吗外贸型网站制作
  • 柳市做公司网站北京高端设计公司有哪些
  • ps做兼职在什么网站可以找到腾讯云cdn加速wordpress
  • 备案个人网站名称大全网站建设制作免费咨询
  • 为什么要建设种苗供求网站wordpress seo免费主题
  • 做企业网站通常哪找素材如何找到网站管理员
  • 德安县建设局网站大连网站公司设计
  • 网页制作是建网站的第几步游戏代理平台
  • 八爪鱼网络网站建设做五金有哪些网站推广
  • wordpress关站社区微网站建设需求分析
  • 电商网站建设布局视频网站开发要求
  • 笑话网站源码带wap老河口市网站
  • 云南省建设厅官方网站不良记录wordpress文字主题
  • 烟台商城网站建设陕西省建设厅官网证件查询
  • 宁波网站建设开发服务信诺盛世网站
  • 广州建网站百度推广怎么样才有效果
  • 学做彩票网站好成都私人放款联系方式电话