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

283. Move Zeroes - Easy

时间:2018-12-02 16:07:23      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:fun   pre   out   ast   function   时间   order   point   mini   

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.

Example:

Input: [0,1,0,3,12]
Output: [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.

 

用two pointer

fast pointer p1找非零元素,slow pointer p2用来赋值。当p1指向元素为0时, p1右移;当p1指向元素非0时,把当前元素赋给p2指向的元素,同时移动p1, p2。最后再把p2之后的元素全部赋0即可。

时间:O(N),空间:O(1)

class Solution {
    public void moveZeroes(int[] nums) {
        int p1 = 0, p2 = 0;
        while(p1 < nums.length) {
            if(nums[p1] != 0)
                nums[p2++] = nums[p1++];
            else
                p1++;
        }
        while(p2 < nums.length)
            nums[p2++] = 0;
    }
}

 

283. Move Zeroes - Easy

标签:fun   pre   out   ast   function   时间   order   point   mini   

原文地址:https://www.cnblogs.com/fatttcat/p/10053595.html

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