从 int 数组中删除重复值而不使用额外数组的最佳方法

本文关键字:数组 方法 最佳 int 删除 | 更新日期: 2023-09-27 18:30:49

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

例如:-

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

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

那有可能吗??

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

从 int 数组中删除重复值而不使用额外数组的最佳方法

从根本上说

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

您可以保留一个单独的变量来指示数组的"已使用"部分,最终得到一个 (比如) { 1, 2, 3, 5, 6, 8, 0, 0, 0, 0, 0 } 的数组和 6 的"已用长度"。目前尚不清楚您在性能方面感兴趣的是,除了避免使用额外的数组。例如,您可以对数组进行排序,然后继续前进,每次遇到连续相等的元素时,将其余元素向上打乱一个值。

正如 Jon 所提到的,你不能调整数组的大小。最好的方法是使用哈希集。

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