gpt4 book ai didi

java - 将所有非零整数移至数组的开头

转载 作者:行者123 更新时间:2023-12-01 23:03:57 26 4
gpt4 key购买 nike

我试图将所有非零整数移动到数组“a”的开头/左侧(例如 {0,0,4,3,0} 变为 {4,3,0,0 ,0})

这是我的程序。它编译并运行没有错误,但数组最终只有零。如有任何建议,我们将不胜感激。

int[] squeezeLeft(int[] a) {
int count = 0;
//creates new array
int [] a2 = new int[a.length];
//loops through a
for (int i = 0; i< a.length; i++){
//gets a temporary value from a[i]
int temp = a[i];
//assigns a[i] to temporary variable
a[count] = temp;
a[i] = 0;
/* raises count integer by one, so the following indice which is zero, is replaced

by the following non=zero integer*/
count++;
}
return a2;
}

最佳答案

我知道这不是非常有效的解决方案O^2,但它会满足您的要求。

private static int[] sequeezeLeft(final int[] a) {
for (int i = 0; i < a.length; i++) {
if (a[i] != 0) {
for (int j = 0; j < a.length; j++) {
if (a[j] == 0) {
a[j] = a[i];
a[i] = 0;
}
}
}
}
return a;
}

时间复杂度为 O(n) 的另一个版本

    private static int[] sqeeze2(int [] a){
int index = 0;
if(a.length == 0)
return a;
for(int i=0;i<a.length;i++){
if(a[i] !=0 && index < a.length){
a[index] = a[i];
a[i]=0;
index++;
}
}
return a;
}

关于java - 将所有非零整数移至数组的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23073699/

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