Tuesday, September 26, 2017

283. Move Zeroes

Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.
For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
Note:
  1. You must do this in-place without making a copy of the array.
  2. Minimize the total number of operations.

Solution:
Use a variable to keep track the count of non-zero element and move them to the right position which is indexed at their count, and set all other positions to 0.

 public void moveZeroes(int[] nums) {  
     int ind=0;  
     for(int i=0;i<nums.length;i++){  
       if(nums[i]!=0){  
         if(i!=ind){  
           nums[ind]=nums[i];  
           nums[i]=0;  
         }  
         ind++;  
       }  
     }  
   }  

No comments:

Post a Comment