gpt4 book ai didi

java - 删除数组元素后如何将元素向左移动?

转载 作者:行者123 更新时间:2023-11-29 07:25:07 24 4
gpt4 key购买 nike

我被要求编写,从数组中删除元素 (假设 k=30) 并将其他元素移到它的左边,而不使用内置方法。

我试过下面的方法。

public static void main(String[] args) {
// TODO Auto-generated method stub

int[] arr = new int[] { 1, 2, 30, 4, 5, 30, 6 };

int k = 30;
int count = 0;

System.out.println("---Original Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}

for (int i = 0; i < arr.length; i++) {

if (arr[i] == k)
count++;
}

for (int j = 0; j < count; j++) {
for (int i = 0; i < arr.length; i++) {

if (arr[i] == k) {
for (int l = i; l < arr.length - 1; l++) {
arr[l] = arr[l + 1];
}
}
}

}

System.out.println("---Modified Array------");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}

}

我需要这样的输出:[1 2 4 5 6 0 0]

但是上述逻辑的输出是:[1 2 4 5 6 6 6]

另外,我担心在这里使用嵌套的 for 循环。有什么方法可以在不使用任何内置方法的情况下降低时间复杂度?

最佳答案

这是另一种变体:

    int[] arr = new int[] { 1, 2, 30, 4, 5, 30, 6 };

int k = 30;
int j = 0;

for (int i = 0; i < arr.length; i++) {
if (arr[i] != k) {
arr[j++] = arr[i];
}
}
while (j < arr.length) {
arr[j++] = 0;
}

关于java - 删除数组元素后如何将元素向左移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742096/

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