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.
给定一个未排序的整数数组,找出最长的连续元素序列的长度。
例如,
给定[100,4,200,1,3,2]
最长的连续元素序列是[1,2,3,4]。返回其长度:4。
您的算法应该在O(n)复杂度下运行。
function longestConsecutive($arr) {
$map = array();
foreach ($arr as $item) {
$map[$item] = 1;
}
$max = 0;
foreach ($arr as $item) {
$num = 0;
$i = $item;
while(true) {
if (!isset($map[$i])) {
if ($max < $num) {
$max = $num;
}
break;
}
$num ++;
$i ++;
}
}
return $max;
}
$array = [
1,6,4,65,3,2,20,5
];
$ret = longestConsecutive($array);
print $ret;