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

Move Zeroes

时间:2015-10-19 12:34:28      阅读:120      评论: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.

 Runtime: 60ms

 1 class Solution {
 2 public:
 3     void moveZeroes(vector<int>& nums) {
 4         if(nums.size() <= 1) return;
 5         
 6         int zr = 0, nzr = 0;
 7         while(zr < nums.size()){
 8             while(zr < nums.size() && nums[zr] != 0)
 9                 zr++;
10             nzr = zr + 1;
11             while(nzr < nums.size() && nums[nzr] == 0)
12                 nzr++;
13             
14             if(nzr >= nums.size()) break;
15             swap(nums[zr], nums[nzr]);
16             zr++;
17             nzr++;
18         }
19     }
20 };

 

Move Zeroes

标签:

原文地址:http://www.cnblogs.com/amazingzoe/p/4891379.html

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