gpt4 book ai didi

C# - 就地修改数组,而不在内存中创建另一个数组

转载 作者:行者123 更新时间:2023-11-30 21:34:33 25 4
gpt4 key购买 nike

在 C# 中,是否可以从数组中删除一个元素?

当然,关于从数组中删除项的问题很多。每个答案要么使用一个列表,要么使用新值创建另一个数组。但是,我想知道是否可以在 C# 中就地修改数组(删除或添加元素)。

在 LeetCode 简单题“从排序数组中删除重复项”中,你被限制在同一个数组中,你不能在内存中创建一个新数组(O(1) 内存空间)。这可能使用 C# 吗?我想不出不创建另一个数组的解决方案。

最佳答案

In C#, is it possible to remove an element from an array in place?

不,根据数组的定义。数组是固定长度的。但是,您可以跟踪数组中“您关心的元素”的数量(一个整数),并通过将以下元素向下复制到它们之前的索引并递减此计数器来删除元素。

然后你会得到一个 Array List (.NET 中的列表 )。

In the easy LeetCode question "Remove Duplicates from Sorted Array", you are restricted to the same array, you cannot create a new array in memory (O(1) space in memory). Is this possible using C#? I can't come up with a solution that does not create another array.

该问题要求您用您的解决方案修改提供的数组,然后返回用唯一值填充的数组子集的长度(从索引 0 开始)。

此处提供了 Java 解决方案:https://leetcode.com/problems/remove-duplicates-from-sorted-array/solution/ - 您可以更改两个字母(lengthLength 两次)以使其在 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;
}

关于C# - 就地修改数组,而不在内存中创建另一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com