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

283. Move Zeroes

时间:2016-06-29 23:34:22      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

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

标签:

原文地址:http://www.cnblogs.com/whl2012/p/5596714.html

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