Почему не принили такое решение?
private boolean compressRow(int[] row) {
boolean flag = false;
for (int i = 0; i < row.length; i++) {
if (row[i] == 0) {
for (int j = row[i]; j < row.length; j++) {
if (row[j] > 0) {
if (j != 0) {
int temp = row[j - 1];
row[j - 1] = row[j];
row[j] = temp;
flag = true;
}
}
}
}
}
return flag;
}