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的主要内容,如果未能解决你的问题,请参考以下文章

283. Move Zeroes

283. Move Zeroes

283. Move Zeroes

算法:移动零283. Move Zeroes

LeetCode 283. Move Zeroes

283. Move Zeroes