283. Move Zeroes
Posted whl-hl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了283. Move Zeroes相关的知识,希望对你有一定的参考价值。
1. 问题描述
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
2. 解题思路
- 解题思路可借鉴 冒泡法
3. 代码
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 };
4. 反思
以上是关于283. Move Zeroes的主要内容,如果未能解决你的问题,请参考以下文章