1. 程式人生 > >128.Longest Consecutive Sequence

128.Longest Consecutive Sequence

color blank lee 直連 bubuko lap image style turn

題目鏈接

題目大意:給出一個數組,找出其中連續數值最多的長度。例子如下:

技術分享圖片

法一: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