【发布时间】:2010-12-04 16:56:25
【问题描述】:
我在接受微软采访时遇到了这个问题。
给定一个随机整数数组, 用 C 编写一个算法,删除 重复数字并返回原始数字中的唯一数字 数组。
例如输入:{4, 8, 4, 1, 1, 2, 9} 输出:{4, 8, 1, 2, 9, ?, ?}
需要注意的是,预期的算法不应该要求首先对数组进行排序。并且当一个元素被删除时,以下元素也必须向前移动。无论如何,数组尾部元素向前移动的元素的值可以忽略不计。
更新:结果必须在原始数组中返回,并且不应使用辅助数据结构(例如哈希表)。不过,我想订单保存是没有必要的。
更新 2:对于那些想知道为什么这些不切实际的限制的人,这是一个面试问题,所有这些限制都在思考过程中进行了讨论,以了解我如何提出不同的想法。
【问题讨论】:
-
必须保留唯一编号的顺序吗?
-
结果是否必须在原始数组中返回?
-
我已经更新了这个问题。结果应该在原始数组中返回。但是,序列的顺序无关紧要。
-
当有人在问题和其他答案上拉皮条时,这很烦人。请耐心等待,人们会到达那里的。
-
为什么不允许使用哈希表?这种限制毫无意义。
标签: c algorithm arrays duplicates