您的位置:首页 > 其它

算法第十四周作业01

2017-04-21 12:27 218 查看

Description

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.

Solution

首先对输入数组排序

count表示局部有续子串长度,result表示最大有序子串长度(即返回的结果)

逐个迭代,当nums[i] == nums[i-1] + 1时,count++;当nums[i] == nums[i-1]时,跳过,不处理;否则,nums[i]和nums[i-1]不连续且不相等,则局部有序终止了,重置count。

Code

import java.util.Arrays;

public class Solution {
public int longestConsecutive(int[] nums) {
// 初始化
int result = nums.length == 0 ? 0 : 1;
int count = 1;
// 排序
Arrays.sort(nums);
// 逐个迭代判断
for (int i = 0; i < nums.length - 1; i++) {
if (nums[i + 1] == nums[i]+1) {
// 计数器加1
count++;
if (result < count)
result = count;
} else if(nums[i+1] != nums[i]) {
// 重置计数器
count = 1;
}
}
return result;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 最长有序