1

我需要在不使用额外数组的情况下从 int 数组中删除重复值,并且在从数组中删除重复值后如何调整数组的长度?

例如:-

int []arr = new int [] {1,2,1,3,3,5,6,1,3,2,8} //数组长度为11

删除重复值后输出应为 {1,2,3,5,6,8} // 数组长度为 6

那有可能吗?

**我不允许使用预定义的方法,只需要使用正确的逻辑执行。

4

2 回答 2

3

基本上你不能:数组在 .NET 中是固定大小的。您无法调整它们的大小。

您可能会保留一个单独的变量来指示数组的“已使用”部分,最终以(例如){ 1, 2, 3, 5, 6, 8, 0, 0, 0, 0, 0 } 的数组结束并且“使用长度”为 6。除了避免使用额外的数组之外,不清楚您对性能感兴趣的方面是什么。例如,您可以对数组进行排序,然后向前走,每次遇到连续相等的元素时,将余数上移一个值。

于 2012-04-11T13:02:10.510 回答
0

正如乔恩所提到的,你不能调整数组的大小。最好的方法是使用 Hashset。

如果不允许使用 Hashset,请对它们进行排序。但是在这里你应该创建一个新数组来保存结果。

于 2012-04-11T13:16:52.223 回答