我需要在不使用额外数组的情况下从int数组中删除重复值,并且在从数组中删除重复值之后如何调整数组的长度?
例如: -
int [] arr = new int [] {1,2,1,3,3,5,6,1,3,2,8} //数组长度为11
删除重复值后输出应为{1,2,3,5,6,8} //数组长度为6
有可能吗?
**我不允许使用预定义的方法,只需要使用适当的逻辑执行。
答案 0 :(得分:3)
从根本上说,你不能:数组在.NET中是固定大小的。你无法调整它们的大小。
你可能会保留一个单独的变量来指示数组的“used”部分,最后得到一个数组(比如){1,2,3,5,6,8,0,0,0,0 ,0}和“使用长度”为6.除了避免使用额外的数组之外,还不清楚在性能方面你感兴趣的是什么方面。例如,你可以对数组进行排序,然后一起走,每当你遇到连续的相等元素时,将其余部分拖放一个值。
答案 1 :(得分:0)
正如Jon所说,你无法调整数组大小。最好的方法是使用Hashset。
如果您不允许使用Hashset,请对它们进行排序。但是在这里你应该创建一个新数组来保存结果。