我正在尝试创建一个程序,它将采用一个整数数组,比如说{2,0,32,0,0,8}可以是任意长度,并且使得所有非零数字都是左下角的索引,所有的零都移动到最后。 例如,{2,0,32,0,0,8}变为{2,32,8,0,0,0}。 此数组可以是任意长度,并包含任何非负整数。 这就是我到目前为止所做的:
public static int[] moveLeft(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;
}
然而,当我这样做时,它不适用于第一个和第二个字符。如果我有{1,2,0,1},它将返回{2,1,1,0},它应该返回{1,2,1,0}。有什么帮助吗?
答案 0 :(得分:1)
你的内部循环应该在索引i
之前停止。改变这个
for (int j = 0; j < a.length; j++) {
到
for (int j = 0; j < i; j++) {
然后你的代码适合我。