Leetcode - Move Zeroes

原创 2016年08月30日 14:30:55

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.

//思路:从左往右,遇到0,则0后面的所有元素往前移动一位,有多少0,移动多少回,最后末尾添加0
void moveZeroes(vector<int>& nums) {
        int count=0;
        for(int i=0;i<nums.size();i++)
            if(nums[i]==0)
                count++;
        int tmp=count;
       for(int i=0; tmp>0 && i<nums.size(); i++){
             if(nums[i]==0){
                  for(int j=i;j<nums.size()-1;j++)
                          nums[j]=nums[j+1];                 
                  tmp--;
                  i--; // in case that start with 00
                } 
        }        
        for(int i=0;i<count;i++)
            nums[nums.size()-1-i]=0;
    }



//别人的做法:

void moveZeroes(vector<int>& nums) {
        int j = 0;
        // move all the nonzero elements advance
        for (int i = 0; i < nums.size(); i++) {
            if (nums[i] != 0) {
                nums[j++] = nums[i];
            }
        }
        for (;j < nums.size(); j++) {
            nums[j] = 0;
        }
    }

刷leetcode的最爽的地方不在于一次次的Accepted,而是自己的绞尽脑汁,想出来自认为还不错的代码,AC后看到讨论区里,大神们更优雅更精致的代码后,被虐的那个酸爽。大呼,哎呦卧槽,我怎么没想到。。。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode笔记--Move Zeroes

 Move Zeroes 题目:难度(Easy) Given an array nums, write a function to move all 0's to the end of it...

leetcode--Move Zeroes

Given an array nums, write a function to move all 0’s to the end of it while maintaining the relativ...

LeetCode之Move Zeroes

1、题目 Given an array nums, write a function to move all 0's to the end of it while maintaining...

<LeetCode OJ> 283. Move Zeroes

283. Move Zeroes My Submissions Question Total Accepted: 40008 Total Submissions: 94323 Difficul...

leetcode submission/20161018(move zeroes)

明天发工资啊666 Given an array nums, write a function to move all 0's to the end of it while maintain...

LeetCode------Move Zeroes

题目简介 Given an array nums, write a function to move all 0's to the end of it while maintaining t...

LeetCode 283 move Zeroes

开始准备算法面试,毕竟马上找工作。将最近自己在leetcode做的题目记录一下,方便自己复习。同时也提供给有需要的朋友,https://leetcode.com/还没账号的朋友赶快去注册一个吧。 内容...

LeetCode283Move Zeroes

最近在刷leetcode的题库,强化自己的算法水平和编程能力,感觉收获很多,有些自己的解法和理解,在这里分享给大家。先上题目: 题目大意:给一数组,把其中的0移到最后面,同时其他元素相对位置不变。注意...

leetcode:Move Zeroes

283. Move Zeroes  My Submissions Question Editorial Solution Total Accepted: 87958 Total Submiss...

LeetCode笔记:283. Move Zeroes

将数组中的所有“0”移动到最后的游戏。多种解法,希望大家来解答一下我的疑问
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)