关闭

283. Move Zeroes

标签: 283. Move ZeroesleetcodeC++
176人阅读 评论(0) 收藏 举报
分类:
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int first=0;
        while(first<nums.size()&&nums[first])
            first++;
        int second=first+1;
        while(1)
        {
            while(second<nums.size()&&nums[second]==0)
                second++;
            if(second>=nums.size())
                break;
            std::swap(nums[first++],nums[second++]);
        }
	//下面这种方法不符合题目要求:最少操作次数。
        /*int j=0;
        for(int i=0;i<nums.size();i++)
            if(nums[i])
                nums[j++]=nums[i];
        while(j<nums.size())
            nums[j++]=0;*/

        /*int first=0;
        int second=0;
        while(1)
        {
            while(first<nums.size()&&nums[first])
                first++;
            if(second<=first)
                second=first+1;
            while(second<nums.size()&&nums[second]==0)
                second++;
            if(second>=nums.size())
                break;
            std::swap(nums[first++],nums[second++]);
        }*/
    }
};

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

283. Move Zeroes - 把数组中的0移到末尾

原题描述原题地址: https://leetcode.com/problems/move-zeroes/Given an array nums, write a function to move all 0’s to the end of it while maintaining the relat...
  • qq_25077833
  • qq_25077833
  • 2016-11-26 00:12
  • 305

Move Zeroes(移动零元素)

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.(给定一个数组,将数组中值为0的元...
  • ajiangfan
  • ajiangfan
  • 2016-09-24 11:49
  • 158

LeetCode 283 Move Zeroes(移动所有的零元素)

翻译给定一个数字数组,写一个方法将所有的“0”移动到数组尾部,同时保持其余非零元素的相对位置不变。例如,给定nums = [0, 1, 0, 3, 12],在调用你的函数之后,nums应该变为[1, 3, 12, 0, 0]。备注: 你必须就地完成,不得复制该数组。 最小化总共的操作数。Given ...
  • NoMasp
  • NoMasp
  • 2015-12-26 19:07
  • 4208

深入浅出C++11(3) -- 右值引用和move语义

右值引用 什么是lvalue, 什么是rvalue? lvalue: 具有存储性质的对象,即lvalue对象,是指要实际占用内存空间、有内存地址的那些实体对象,例如:变量(variables)、函数、函数指针等。 rvalue:相比较于lvalue就是所谓的没有存储性质的对象, 也就是临时对象。...
  • liqinghua1653
  • liqinghua1653
  • 2013-10-04 20:49
  • 6541

Oracle Move命令总结

Oracle Move命令总结   从8i开始,oracle开始提供Move的命令。我们通常使用这个命令,将一个table segment从一个tablespace移动到另一个tablespace。Move实际上是在block之间物理的copy数据,那么,我们可以通过这种方式来降低table的HW...
  • u013983558
  • u013983558
  • 2014-03-13 08:48
  • 720

c++11move语意的便捷理解

本文是一篇回答,原文链接为:http://stackoverflow.com/questions/3106110/what-are-move-semantics(第一个回答)。对于理解c++11的move概念较有帮助,我用(译注:)补充了自己的一些看法,而(原文:)表示原作者的括号。 正文如下...
  • zy19940906
  • zy19940906
  • 2016-01-08 12:21
  • 1308

C++ 11 右值引用以及std::move

新类型:          int和int&是什么?都是类型。int是整数类型,int&则是整数引用类型。同样int&&也是一个类型。两个引号&&是C++ 11提出的一个新的引用类型。记住,这是一个新...
  • luotuo44
  • luotuo44
  • 2015-07-07 00:05
  • 5148

[C++11]_[初级]_[使用std::move移动对象资源]

场景: C++ 标准库使用比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数据也会复制.这就会造成对象内存的额外创建, 本来原意是想把参数push_back进去就行了. C++11 提供了std::move 函数来把左值转换为xrvalue, 而且新版的push_ba...
  • infoworld
  • infoworld
  • 2016-02-25 11:59
  • 8263

c++move语义与右值引用

// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in...
  • xdgs_2005
  • xdgs_2005
  • 2015-03-05 12:20
  • 2171

【移动语义和精准转发系列二】std::move和std::forward

在我们开始讲解std::move之前,先来介绍一个概念:引用折叠。这个概念仅用于 typedef 和 模板类型参数 中。 在模板世界中,T&& 称为Universal Reference,即通用引用。这与普通函数中形参的&&是不同的,希望不要弄混了。 对于模板函数...
  • friendbkf
  • friendbkf
  • 2015-05-28 20:18
  • 1072
    个人资料
    • 访问:14470次
    • 积分:568
    • 等级:
    • 排名:千里之外
    • 原创:42篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条