【发布时间】:2012-09-21 12:34:29
【问题描述】:
首先,我知道已经有很多重复的答案,但我找不到我想要的,甚至在 Google 中搜索。这是面试时提出的问题。
所以,对于我的问题: 我有下一个 int 数组:
int[] array = {1, 1, 1, 2, 2, 3, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 9, 9};
编辑:您可以假设数组已排序。
我只想得到不同的值,没有重复,意思是:
array = {1, 2, 3, 4, 5, 6, 7, 8, 9, ......};
编辑:假设您不需要缩小数组,而是按排序顺序返回值,并在最后返回其余值。
有几个说明:
- 不要使用任何其他或新的数组,这意味着使用相同的数组来返回结果。
- 不要使用任何集合,如 Set 或 ArrayList。
- 尽可能使其最有用。
我试过用 Set 来做这件事,但现在我想要一些不同的东西。 还尝试用 -1 值替换重复值,但这仅在我假设我仅使用正值时才成立。
如果您发现相同的问题,请告诉我,我将删除此问题。
谢谢。
【问题讨论】:
-
一组是您需要从该数据创建的 - 这就是
Set类的用途。不要重新发明轮子。 -
我们是否假设输入数组总是被排序的?
-
你不能缩小一个数组,所以我不知道你打算怎么做。你能假设这些值已经排序了吗?
-
@Evan Mulawski 这就是面试官问的。相信我,我并没有试图重新发明轮子。
-
其实像第二行代码这样的一句话,就是使用了一个新的数组。事实上,在许多语言中,修改这种数组的大小意味着使用一个新数组。因此,替代结构使用的具体限制是什么?
标签: java arrays duplicate-removal