标签:
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:
You must do this in-place without making a copy of the array.
Minimize the total number of operations.
Tags: Array Two Pointers
Similar Problems: (E) Remove Element
1 class Solution { 2 public: 3 void moveZeroes(vector<int>& nums) 4 { 5 //思路一:类似冒泡法 6 for (size_t i=0; i<nums.size(); i++) 7 { 8 if (0 == nums[i]) 9 { 10 for (size_t j=i+1; j<nums.size(); j++) 11 { 12 if (0!=nums[j]) 13 { 14 nums[i] = nums[j]; 15 nums[j] = 0; 16 break; 17 } 18 } 19 } 20 } 21 22 /* 思路二 23 for (int i = 0, j = 0; i < nums.size(); i++) 24 { 25 if (nums[i] != 0) 26 { 27 if (i != j) 28 { 29 nums[j] = nums[i]; 30 nums[i] = 0; 31 } 32 j++; 33 } 34 } 35 */ 36 } 37 };
标签:
原文地址:http://www.cnblogs.com/whl2012/p/5596714.html