面试题:找数组中最大连续子序列
2018-08-17 本文已影响0人
开心小蜗
试题:假设有数组 [6, 1, 10, 2, 11, 12, 3, 4, 15, 16]
包含1,2,3,4
、6
、10, 11, 12
、15, 16
等几个连续的子序列,找到其中最大的子序列
var arr = [6, 1, 10, 2, 11, 12, 3, 4, 15, 16]
function maxSubSeq (arr) {
var copy = arr.slice(0)
var count = 1
var start = 0
var preserveCount = 0
var preserveStart = 0
copy.sort((a, b) => a - b)
for (var i = 0; i < copy.length; i++) {
if (copy[i + 1] - copy[i] === 1) {
count++
} else {
if (count > preserveCount) {
preserveCount = count
preserveStart = start
}
count = 1
start = i + 1
}
}
return copy.slice(preserveStart, preserveStart + preserveCount)
}
maxSubSeq(arr)