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