Move Zeroes to End

Medium Arrays
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;
}