Move Zeroes to End
Move all zeroes in an array to the end while keeping the order of the non-zero elements.
Sample input
[0, 1, 0, 3, 12]
Sample output
1 3 12 0 0
Solution
arr = [0, 1, 0, 3, 12]
non_zero = [x for x in arr if x != 0]
zeros = [0] * (len(arr) - len(non_zero))
result = non_zero + zeros
print(*result)
const arr = [0, 1, 0, 3, 12];
const nonZero = arr.filter(x => x !== 0);
const zeros = new Array(arr.length - nonZero.length).fill(0);
const result = nonZero.concat(zeros);
console.log(result.join(" "));
public class Main {
public static void main(String[] args) {
int[] arr = {0, 1, 0, 3, 12};
int[] result = new int[arr.length];
int idx = 0;
for (int x : arr) {
if (x != 0) result[idx++] = x;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < result.length; i++) {
sb.append(result[i]);
if (i < result.length - 1) sb.append(" ");
}
System.out.println(sb.toString());
}
}
fun main() {
val arr = intArrayOf(0, 1, 0, 3, 12)
val nonZero = arr.filter { it != 0 }
val zeros = List(arr.size - nonZero.size) { 0 }
val result = nonZero + zeros
println(result.joinToString(" "))
}
let arr = [0, 1, 0, 3, 12]
let nonZero = arr.filter { $0 != 0 }
let zeros = Array(repeating: 0, count: arr.count - nonZero.count)
let result = nonZero + zeros
print(result.map { String($0) }.joined(separator: " "))
void main() {
List<int> arr = [0, 1, 0, 3, 12];
List<int> nonZero = arr.where((x) => x != 0).toList();
List<int> zeros = List.filled(arr.length - nonZero.length, 0);
List<int> result = [...nonZero, ...zeros];
print(result.join(' '));
}
#include <iostream>
using namespace std;
int main() {
int arr[] = {0, 1, 0, 3, 12};
int n = 5;
int result[5];
int idx = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != 0) result[idx++] = arr[i];
}
while (idx < n) result[idx++] = 0;
for (int i = 0; i < n; i++) {
cout << result[i];
if (i < n - 1) cout << " ";
}
cout << endl;
return 0;
}
#include <stdio.h>
int main() {
int arr[] = {0, 1, 0, 3, 12};
int n = 5;
int result[5];
int idx = 0;
for (int i = 0; i < n; i++) {
if (arr[i] != 0) result[idx++] = arr[i];
}
while (idx < n) result[idx++] = 0;
for (int i = 0; i < n; i++) {
printf("%d", result[i]);
if (i < n - 1) printf(" ");
}
printf("\n");
return 0;
}