admin@onlinelearningcenter.in (+91) 7 999 01 02 03

Move all zeroes to end of array

suraz Ghimire
5 Posts

Given an Array of a combination of numbers and zeros,

Write a Program to move all the zeros to the end of the array.

 

Note: The order of the numbers should remain the same.

Input :  arr[] = {1, 2, 0, 4, 3, 0, 5, 0};
Output : arr[] = {1, 2, 4, 3, 5, 0, 0, 0};

Input : arr[]  = {1, 2, 0, 0, 0, 3, 6};
Output : arr[] = {1, 2, 3, 6, 0, 0, 0};

 

 Solution in Scala:

package in.olc.array.easy

object _2_1MoveAllZerosToEnd {

  def leftShiftElements(arr: Array[Int], pos: Int) = {
    for (i <- pos until arr.length - 1) {
      arr(i) = arr(i + 1)
    }
  }

  def main(args: Array[String]): Unit = {
    val arr = Array(1, 2, 0, 3, 5, 0, 1, 2, 0);

    for (i <- 0 until arr.length) {
      if (arr(i) == 0) {
        leftShiftElements(arr, i)
        arr(arr.length - 1) = 0
      }
    }
    for (i <- 0 until arr.length) {
      print(arr(i) + " ")
    }
  }
}

Time Complexity: O(n2) Since there are 2 loops involved.

Space Complexity: O(1)

 

Better Approach:

package in.olc.array.easy

object _2_2MoveAllZerosToEnd {
  def moveZeroToEnd(arr: Array[Int]): Unit = {
  var count=0
    for(i<- 0 until arr.length){
      if(arr(i)!=0){
        arr(count)=arr(i)
        count=count+1
      }
    }
    
    for(i<- count until arr.length){
      arr(count)=0
      count=count+1
    }
  }

  def main(args: Array[String]): Unit = {
    val arr = Array(1, 2, 0, 3, 5, 0, 1, 2, 0)
    moveZeroToEnd(arr)
    arr.foreach(println)
  }
}

 Time Complexity: O(n)

Space Complexity:O(1)

 

 

 

 

Published By : suraz Ghimire
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Comments

Jquery Comments Plugin