需要协助设计算法来满足这种需求。启动输入将是一个已知包含唯一整数的数组。不一定是有序的或顺序的,可以是积极的或消极的。需要将新整数推送到数组,并通过增加冲突项来保持项唯一。但是应该保留它们出现的顺序。例如:
从数组[1 5 3 4 6]
开始,然后插入3
顺序应为:
[1 5 3 4 6 3 ] - 推3 [1 5 4 4 6 3] - 增加3到4
[1 5 4 5 6 3] - 增加4到5
[1 6 4 5 6 3] - 增加5到6
[1 6 4 5 7 3] - 增加6到7
输入不会很长,因此效率不是主要问题,但应该是可管理的。
答案 0 :(得分:1)
如果您没有创建其他数据结构以与未分类的主list
配合使用,那么您的append
将在O(n^2)
中运行,因为最坏的情况是它必须找到并递增list
中的每个元素。既然你说list
不长,效率不应该成问题,我认为这没问题。
由于您没有指定语言,我可以为您提供一些可以使用的基本算法的伪代码。
def incrementHelper(list, e):
if (list.contains(e)):
incrementHelper(list, e+1)
list.set(list.indexOf(e), e+1)
def appendAndIncrement(list, e)
incrementHelper(list, e)
return list.append(e)
编辑:你是对的,其他解决方案不起作用 - 我的不好。这个使用递归解决方案,应该避免你提到的问题。