[英]Logic to remove first n elements from an array
我需要为赋值编写的方法之一应该是从数组中删除前 n 个元素。 但是,我没有得到正确的输出。 我相信我犯了一个错误,但我不确定如何解决它。
解决方案应该尽量保持代码的格式。
for (int i = n; i >= 0; i--) {
elementData[i] = elementData[i + 1];
size--;
}
代码的意思是,对于 n 及以下的每个元素,将其替换为索引中高于它的任何元素。 然后每次执行此操作时都减小大小变量,这应该会导致它在打印时看起来像一个删除操作。
我预计 [0, 1, 2, 4, 6, 4, 7] 的输出为 [4, 7]。
然而,我得到了[7]。
在上述情况下,n 被传递为 5。
我意识到这是一个寻找实现的分配问题,但任何在 Java 中执行此操作的人都应该使用提供的 API。 例如:
public int[] trimArray(int[] source, int trimBy) {
if (trimBy > source.length) return source;
return Arrays.copyOfRange(source, trimBy, source.length);
}
trimArray(new int[]{0, 1, 2, 4, 6, 4, 7}, 5) // -> [4, 7]
你可以只使用这个:
int[] result = new int[elementData.length - n];
for (int i = 0; i < result.length; i++) {
result[i] = elementData[n + i];
}
这是这个的扩展形式:
int[] result = new int[elementData.length - n];
System.arraycopy(elementData, n, result, 0, result.length);
您可以使用过滤器:
let a = [0, 1, 2, 4, 6, 4, 7]
你想获得[4, 7]
删除5
第一个元素所以输入
a = a.filter((_, i) => i >= 5)
现在
a = [4, 7]
elementData = Arrays.copyOfRange( elementData, n, elementData.length ); // originalArray, startIndex, end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.