我有一个简单的算法问题,不知怎么的,我已经挣扎了一段时间。也就是说,我有这样的数据:
[('standby', [16, 17]),
('unavailable', [15, 18, 19, 20]),
('work', [7, 8, 9, 10, 12, 13])]
我想用下面的一系列数字来代替它:
['standby', '16 - 17'],
['unavailable', '15'],
['unavailable', '18 - 20'],
['work', '7 - 10'],
['work', '12 - 13'],
有人能给我指正确的方向吗?
提前谢谢。
非常基本的o(n)算法,传递以下数字,直到它们不跟随,保存为XX-XX,然后继续传递其余数字,直到结束。
findFollowingNumbers (numberArr, i) :
first = numberArr[i]
while (numberArr[i] + 1 == numberArr[i+1] || i == numberArr.length - 1)
i++
last = numberArr[i]
//save somewhere as first + " - " + last
findFollowingNumbers(numberArr, i)
其中例如numberArr = [16, 17]
,并且第一个调用将是findFollowingNumbers(numberArr, 0)