码迷,mamicode.com
首页 > 其他好文 > 详细

283. Move Zeroes

时间:2016-09-11 06:49:06      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:

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.

思路:bubble sort的想法,看这个数是不是0,是的话就后移。O(n^2)。

public class Solution {
    public void moveZeroes(int[] nums) {
        for(int i=nums.length-1;i>=0;i--)
        {
            for(int j=0;j<nums.length-1;j++)
            {
                if(nums[j]==0)
                {
                    swap(nums,j,j+1);
                }
            }
        }
    }
    public void swap(int[]nums,int i,int j)
    {
        int tmp=nums[i];
        nums[i]=nums[j];
        nums[j]=tmp;
    }
    
}

Solution2: 

思路:双指针,用index指针存不是零的数。最后再从已有的array后面往后加0.

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

 

283. Move Zeroes

标签:

原文地址:http://www.cnblogs.com/Machelsky/p/5860895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!