Longest Consecutive Sequence
思路:
这是leetcode hard的难度。利用hashset的离散属性,可以在O(n)的时间下完成。
1. 把所有数加到hashset里面。
2. 遍历数组,找到sub sequence的起始点,也就是!set.contains(n-1)。然后再看比它大1的数在不在set里面,更新current longest count。
代码如下:
这是leetcode hard的难度。利用hashset的离散属性,可以在O(n)的时间下完成。
1. 把所有数加到hashset里面。
2. 遍历数组,找到sub sequence的起始点,也就是!set.contains(n-1)。然后再看比它大1的数在不在set里面,更新current longest count。
代码如下:
public class Solution {
/*
* @param num: A list of integers
* @return: An integer
*/
public int longestConsecutive(int[] num) {
// write your code here
if(num == null || num.length == 0)
return 0;
int longest = 0;
Set<Integer> set = new HashSet<>();
// add each number to set
for(int n: num) {
set.add(n);
}
for(int n: num) {
if(!set.contains(n-1)) {
int current = 1;
while(set.contains(++n)) {
current++;
}
longest = Math.max(longest, current);
}
}
return longest;
}
}
评论
发表评论