具有递增重复的唯一数组算法

时间:2017-01-17 20:29:21

标签: arrays algorithm insert

需要协助设计算法来满足这种需求。启动输入将是一个已知包含唯一整数的数组。不一定是有序的或顺序的,可以是积极的或消极的。需要将新整数推送到数组,并通过增加冲突项来保持项唯一。但是应该保留它们出现的顺序。例如:

从数组[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

输入不会很长,因此效率不是主要问题,但应该是可管理的。

1 个答案:

答案 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)

编辑:你是对的,其他解决方案不起作用 - 我的不好。这个使用递归解决方案,应该避免你提到的问题。