題目要求:
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.
題目大意:
給定一個(gè)無序數(shù)組,找出該數(shù)組的最大連續(xù)序列的長度
解題思路:
先將該數(shù)組排序,然后用動(dòng)態(tài)規(guī)劃的思路求解最大值問題
維護(hù)一個(gè)數(shù)組 dp , dp[i] 表示第i個(gè)元素與前面元素的連續(xù)長度,默認(rèn)為1,表示非連續(xù)。
代碼如下:
public int longestConsecutive(int[] nums) {
if(nums.length <2) return nums.length;
Arrays.sort(nums);
if(nums[0] == nums[nums.length-1]) return 1;
int [] dp = new int[nums.length];
Arrays.fill(dp,1);
int result = 1;
for (int i = 1; i < nums.length; i++) {
if(nums[i] == nums[i-1]) dp[i] = dp[i-1];
else if (nums[i] - nums[i-1] == 1){
dp[i] = dp[i-1]+1;
}
result = Math.max(result,dp[i]);
}
return result;
}