我在接受微软采访时遇到了这个问题。
给定一个随机整数数组,用 C 语言编写一个算法,删除重复数字并返回原始数组中的唯一数字。
例如输入:{4, 8, 4, 1, 1, 2, 9}
输出:{4, 8, 1, 2, 9, ?, ?}
一个警告是,预期的算法不应该要求首先对数组进行排序。并且当一个元素被删除时,以下元素也必须向前移动。无论如何,数组尾部元素向前移动的元素的值可以忽略不计。
更新:结果必须在原始数组中返回,并且不应使用辅助数据结构(例如哈希表)。但是,我想订单保存是没有必要的。
更新2:对于那些想知道为什么这些不切实际的限制的人,这是一个面试问题,所有这些限制都在思考过程中进行了讨论,以了解我如何提出不同的想法。