Leetocde128
1.问题描述
2.解决方案
三个关键问题
1.遍历每个数组元素,然后依次后继,那么后继用hash去查o(1),这个很简单想到
2.就是如果有前驱就不查,相当月节省了很多重复的计算,这个要记住,好好思考
3.第三个就是要去重,这个题目里面重复元素是没有意义的,下次记住,如果重复元素没有意义,直接构造set
package leetcode;
import java.util.HashSet;
public class lc128 {
public int longestConsecutive(int[] nums) {
HashSet<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
int Max = 0;
for (int num : set) {
//有前导数
if(set.contains(num-1)) continue;
int curLen = 0;
for (int i = num; set.contains(i) ; i++) {
curLen++;
}
Max = Math.max(curLen, Max);
}
return Max;
}
}