在C#中,是否可以从数组中删除元素?
当然,关于从数组中删除项目有很多问题。每个答案要么使用List,要么使用新值创建另一个数组。但是,我想知道是否可以在C#中修改数组(删除或添加元素)。
在简单的LeetCode问题“从排序数组中删除重复项”中,您被限制在同一个数组中,您无法在内存中创建新数组(内存中的O(1)空间)。这可能使用C#吗?我无法想出一个不会创建另一个阵列的解决方案。
答案 0 :(得分:3)
在C#中,是否可以从数组中删除元素?
不,根据数组的定义。数组是固定长度的。但是,您可以跟踪数组中“您关心的元素”的数量(整数),并通过将以下元素复制到其先前的索引和放大来删除元素。递减这个柜台。
然后您已经派生了Array List(.NET中的List< T>)。
在简单的LeetCode问题“从排序数组中删除重复项”中,您被限制在同一个数组中,您无法在内存中创建新数组(内存中的O(1)空间)。这可能使用C#吗?我无法想出一个不会创建另一个阵列的解决方案。
问题是希望您使用解决方案修改提供的数组,然后返回填充了唯一值的数组子集(从索引0开始)的长度。
此处提供了Java解决方案:https://leetcode.com/problems/remove-duplicates-from-sorted-array/solution/ - 您可以将两个字母(length
更改为Length
两次)以使其在C#中进行编译。
无论如何我会在这里粘贴:
int RemoveDuplicates(int[] nums) {
if (nums.Length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.Length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
}