2015年11月5日星期四

Leetcode 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 1: two pointer, move ahead non-zero value from j to i, when j reach n, set 0 to all element from i to end.
 public class Solution {  
   public void moveZeroes(int[] nums) {  
     int n=nums.length;  
     int i=0, j=0;  
     while (j<n) {  
       if (nums[j]==0) j++;  
       else nums[i++]=nums[j++];  
     }  
     while (i<n) nums[i++]=0;  
   }  
 }  

没有评论:

发表评论