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