Wednesday, May 4, 2022

Question 20: Given an array of 0’s and 1’s in random order, you need to separate 0’s and 1’s in an array

For example::
arr[] = {0,1,0,0,1,1,1,0,1} Array after separating 0 and 1 numbers : {0,0,0,0,1,1,1,1,1}

Solution :

Solution 1:

  • Count number of 0’s in the array. Lets say we get X 0’s
  • Once we get the count, put X 0’s in the array and put (n-X) 1’s in the latter part of array.
Java code:
public static int[] separate0s1sSolution1(int arr[]) { int count=0; for (int i = 0; i < arr.length; i++) { if(arr[i]==0) { count++; } } for (int i = 0; i < count; i++) { arr[i]=0; } for (int i = count; i < arr.length; i++) { arr[i]=1; } return arr; }
Time Complexity : O(N)

Solution 2:

Algorithm: 

Lets say array is arr[]

  • Initialise two index variable , left=0 and right=arr.length-1
  • Increment left variable until you get 1’s.
  • Decrement right variable until you get 0’s
  • If left < right, swap arr[left] and arr[right]
  • In the end, you will see that you have 0’s on left side and 1’s on right side.

Java code:

public static int[] separate0s1sSolution2(int arr[]) { for (int i = 0; i < arr.length; i++) { int left=0; int right=arr.length-1; while(arr[left]==0) { left++; } while(arr[right]==1) { right--; } if(left<right) { int temp=arr[left]; arr[left]=arr[right]; arr[right]=temp; } } return arr; }

Java code to separate odd and even numbers in an array 

public class Separate0s1sMain { public static void main(String[] args) { int arr[] = { 0, 1, 0, 0, 1, 1, 1, 0, 1 }; System.out.println("Original Array: "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } arr = separate0s1sSolution1(arr); System.out.println("n==========================="); System.out.println("Solution 1"); System.out.println("nArray after separating 0's and 1's : "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } System.out.println("n==========================="); System.out.println("Solution 2"); arr = separate0s1sSolution2(arr); System.out.println("nArray after separating 0's and 1's : "); for (int i = 0; i < arr.length; i++) { System.out.print(arr[i] + " "); } } public static int[] separate0s1sSolution1(int arr[]) { int count = 0; for (int i = 0; i < arr.length; i++) { if (arr[i] == 0) { count++; } } for (int i = 0; i < count; i++) { arr[i] = 0; } for (int i = count; i < arr.length; i++) { arr[i] = 1; } return arr; } public static int[] separate0s1sSolution2(int arr[]) { for (int i = 0; i < arr.length; i++) { int left = 0; int right = arr.length - 1; while (arr[left] == 0) { left++; } while (arr[right] == 1) { right--; } if (left < right) { int temp = arr[left]; arr[left] = arr[right]; arr[right] = temp; } } return arr; } }

when you run the above program, you will get the below output::
Original Array: 0 1 0 0 1 1 1 0 1 =========================== Solution 1 Array after separating 0's and 1's : 0 0 0 0 1 1 1 1 1 =========================== Solution 2 Array after separating 0's and 1's : 0 0 0 0 1 1 1 1 1


Don't miss the next article! 
Be the first to be notified when a new article or Kubernetes experiment is published.                            

   

Share This


You may also like

Kubernetes Microservices
Python AI/ML
Spring Framework Spring Boot
Core Java Java Coding Question
Maven AWS