128.Longest Consecutive Sequence
阿新 • • 發佈:2018-04-12
color blank lee 直連 bubuko lap image style turn
View Code
題目鏈接
題目大意:給出一個數組,找出其中連續數值最多的長度。例子如下:
法一: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和cnt19 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 }
128.Longest Consecutive Sequence