首页 文章

在不使用额外数组的情况下从int数组中删除重复值的最佳方法?

提问于
浏览
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

那怎么可能?

**我不允许使用预定义的方法,只需要使用适当的逻辑 .

2 回答

  • 3

    从根本上说,你不能:数组在.NET中是固定的大小 . 你无法调整它们的大小 .

    您可以保留一个单独的变量来指示数组的“已使用”部分,最后得到一个数组(比如){1,2,3,5,6,8,0,0,0,0,0}除了避免使用额外的阵列之外,还不清楚在性能方面你感兴趣的是什么方面 . 例如,您可以对数组进行排序,然后一起走,每次遇到连续的相等元素时,将其余值向上移动一个值 .

  • 0

    正如乔恩所说,你无法调整数组的大小 . 最好的方法是使用Hashset .

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

相关问题