【LeetCode】Longest Consecutive Sequence
2017-06-29 14:33
316 查看
题目:
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.For example,
Given
[100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is
[1, 2, 3, 4]. Return its length:
4.
Your algorithm should run in O(n) complexity.
思路:
1. 将所有数字想放进一个集合set中2. 遍历原数组nums,对于当前便利的数字,在set中查找是否有连续的, 即先逐步累加看累加的当前数字是否在set中,在则累加当前curLen,并从集合中删除(避免反复查看); 不在则同样方式逐步减一在集合中看是否存在。
3. 最后将此次便利的curLen 与maxLen 进行比较更新。
代码如下:
public class Solution { public int longestConsecutive(int[] nums) { HashSet<Integer> set = new HashSet<Integer>(); //add all the num into a set for(int num: nums) set.add(num); int maxLen = 0; //for each of the num in nums, see if there consecutive number for(int num: nums){ int cur = num; int curLen = 0;//keep track of the current Length while(set.contains(cur)){//count all the numbers after cur set.remove(cur); cur++; curLen++; } cur = num -1; while(set.contains(cur)){//count all the numbers before cur set.remove(cur); cur --; curLen++; } maxLen = Math.max(maxLen, curLen);//update global max } return maxLen; } }
相关文章推荐
- Leetcode: Longest Consecutive Sequence 理解分析
- Leetcode 298 Binary Tree Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- [Leetcode] #128 Longest Consecutive Sequence
- LeetCode Longest Consecutive Sequence
- leetcode_Longest Consecutive Sequence
- LeetCode算法题目:Longest Consecutive Sequence
- [LeetCode] Longest Consecutive Sequence, Solution
- [LeetCode] 无序数组中的最长连续数列 The Longest Consecutive Sequence in an unsorted array
- leetcode 日经贴,Cpp code -Longest Consecutive Sequence
- LeetCode: Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- LeetCode128 Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- leetcode || 128、Longest Consecutive Sequence
- leetcode做题总结,题目Longest Consecutive Sequence 2013/02/13
- [LeetCode 128] - 最长连续序列(Longest Consecutive Sequence)
- [LeetCode]128 Longest Consecutive Sequence
- [LeetCode] Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence