## Friday, October 2, 2015

### [Leetcode] Move Zeroes, Solution

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.

[Thoughts]

[Code]
``````1:  class Solution {
2:  public:
3:    void moveZeroes(vector<int>& nums) {
4:      for(int zero_index = 0, none_zero_index = 0;
5:        none_zero_index < nums.size() && zero_index < nums.size();
6:      ) {
7:        if(nums[zero_index] != 0) {
8:          zero_index++;
9:          none_zero_index = zero_index;
10:          continue;
11:        }
12:        if(nums[none_zero_index] == 0) {
13:          none_zero_index++;
14:          continue;
15:        }
16:        int temp = nums[zero_index];
17:        nums[zero_index] = nums[none_zero_index];
18:        nums[none_zero_index] = temp;
19:        zero_index++;
20:        none_zero_index++;
21:      }
22:    }
23:  };
``````

git: https://github.com/codingtmd/leetcode/blob/master/src/Move_Zeroes.cpp