码迷,mamicode.com
首页 > 其他好文 > 详细

128.Longest Consecutive Sequence

时间:2018-04-12 13:40:02      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:return   更新   col   view   查找   代码   例子   desc   ons   

题目链接

题目大意:给出一个数组,找出其中连续数值最多的长度。例子如下:

技术分享图片

法一:o(nlgn)。先排序,然后遍历一遍,查找连续数值,一旦不连续,则更新ma。代码如下(耗时1ms):

技术分享图片
 1     public int longestConsecutive(int[] nums) {
 2         if(nums.length == 0) {
 3             return 0;
 4         }
 5         //排序
 6         Arrays.sort(nums);
 7         int cnt = 1, ma = 1;
 8         //逐一遍历
 9         for(int i = 1; i < nums.length; i++) {
10             //去除重复值
11             if(nums[i] == nums[i - 1]) {
12                 continue;
13             }
14             //如果连续
15             else if(nums[i] == nums[i - 1] + 1) {
16                 cnt++;
17             }
18             //一旦不连续,更新ma和cnt
19             else {
20                 if(cnt > ma) {
21                     ma = cnt;
22                 }
23                 cnt = 1;
24             }
25         }
26         //由于可能整个数组一直连续,所以最后还应该再判断一下
27         if(cnt > ma) {
28             ma = cnt;
29         }
30         return ma;
31     }
View Code

 

128.Longest Consecutive Sequence

标签:return   更新   col   view   查找   代码   例子   desc   ons   

原文地址:https://www.cnblogs.com/cing/p/8806664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!