我有一个简单的算法问题,我现在有点挣扎了一段时间。 也就是说,我有以下数据:
[('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'],
有人能指出我正确的方向吗?
提前致谢。
答案 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)