[LeetCode] Longest Consecutive Sequence
2016-06-24 14:10
423 查看
题目:
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.
Subscribe to see which companies asked this question
思路:
用一个map存储数组中每个值。
遍历数组,比如到了“4”这个数,我将判断map中是否出现3,2,1。。。5,6,7。。。出现则距离增加,并且map中3,2,1等置空,这样时间复杂度O(n)
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.
Subscribe to see which companies asked this question
思路:
用一个map存储数组中每个值。
遍历数组,比如到了“4”这个数,我将判断map中是否出现3,2,1。。。5,6,7。。。出现则距离增加,并且map中3,2,1等置空,这样时间复杂度O(n)
public class Solution { public int longestConsecutive(int[] nums) { if(nums.length == 0){return 0;} HashMap<Integer, Integer> map = new HashMap<>(); int longestValue = Integer.MIN_VALUE; for(int i=0;i<nums.length;i++) { map.put(nums[i], 1); } for(int i=0;i<nums.length;i++) { int dis = 1; int value = nums[i]; if(map.get(value) !=1){continue;} int leftValue = value - 1,rigthValue = value+1; while(map.containsKey(leftValue)&&map.get(leftValue) == 1) { dis++; map.put(leftValue, 0); leftValue--; } while(map.containsKey(rigthValue)&&map.get(rigthValue) == 1) { dis++; map.put(rigthValue, 0); rigthValue++; } if(dis>longestValue){longestValue = dis;} } return longestValue; } }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解