查找以下一系列数字

时间:2015-10-28 15:39:54

标签: algorithm

我有一个简单的算法问题,我现在有点挣扎了一段时间。 也就是说,我有以下数据:

[('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'],

有人能指出我正确的方向吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

非常基本的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)