Moving all Zeros to the Left Side of the Array
Moving all Zeros to the Left Side of the Array: Write a program to move all the zeros on the
left side of the array while maintaining the relative order of non-zero elements. You should not
use another array.
Solution :
C
left side of the array while maintaining the relative order of non-zero elements. You should not
use another array.
Solution :
C
/* Float all zeros to the left of an array */ #include <stdio.h> #include <stdlib.h> void float_zeros(int *arr, int len); void print_array(int *arr, int len); int main(void) { int n = 0, *arr = NULL, i = 0; scanf("%d", &n); if(n <= 0) { fprintf(stderr, "The array size can't be zero or negative\n"); return 1; } arr = (int*)calloc(1, n * sizeof(int)); for(i = 0; i < n; i++) scanf("%d", &arr[i]); float_zeros(arr, n); print_array(arr, n); free(arr); return 0; } void float_zeros(int *arr, int len) { /* Find all the 0s in arr, and float them to the left end of arr. */ int i = 0, prev = 0, j = 0, k = 0, temp = 0; while(i < len) { // Find zeros if(*(arr + i) == 0) { // Found a zero. Now float it. // To do that, we need where to float it to. // That would be prev. for(j = i; j > prev; j--) { k = j - 1; temp = *(arr + j); *(arr + j) = *(arr + k); *(arr + k) = temp; } prev++; } i++; } } void print_array(int *arr, int len) { /* Prints an int array of length len */ int i = 0; while(i < len) { printf("%d", *(arr + i)); if(i != len - 1) printf(" "); i++; } printf("\n"); }
JAVA:
/* Float zeros */ import java.util.Scanner; public class Solution { public static void main(String[] args) { int n = 0; Scanner sc = new Scanner(System.in); n = sc.nextInt(); if(n <= 0) System.err.println("The array size can't be zero or negative"); int arr[] = new int[n]; for(int i = 0; i < n; i++) arr[i] = sc.nextInt(); sc.close(); // Changing the array elements here. int i = 0, prev = 0; while(i < n) { // Find a zero if(arr[i] == 0) { // Found zero. // Float it for(int j = i; j > prev; j--) { int k = j - 1, temp = arr[k]; arr[k] = arr[j]; arr[j] = temp; } prev++; } i++; } for(i = 0; i < n; i++) { System.out.print(arr[i]); if(i != n - 1) System.out.print(" "); } System.out.println(""); } }
Subscribe to:
Post Comments
(
Atom
)
No comments :
Post a Comment