[Leetcode] Longest Consecutive Sequence (Java)

来源:互联网 发布:黑龙江东北网络台 v 编辑:程序博客网 时间:2024/05/22 06:55

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.

用set保存num[]数组中的值,找数时从向前向后2个方向找,找到数后就从set中删除这个数,防止下次再次找到

public class Solution {    public int longestConsecutive(int[] num) {int ret = 0;Set<Integer> set = new HashSet<Integer>();for(int i:num)set.add(i);for(int i=0;i<num.length;i++){int ac = findNum(true,num[i],set);int dc = findNum(false,num[i]-1,set);if(ac+dc>ret)ret = ac+dc;}return ret;}private int findNum(boolean flag, int pivot,Set<Integer> set) {int count=0;if(flag){while(set.contains(pivot)){set.remove(pivot);count++;pivot++;}}else {while(set.contains(pivot)){set.remove(pivot);count++;pivot--;}}return count;}}


0 0
原创粉丝点击