OJ lintcode 移动零

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序
注意事项
1.必须在原数组上操作
2.最小化操作数

您在真实的面试中是否遇到过这个题?
Yes
样例
给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums = [1, 3, 12, 0, 0].

/*
这个也可以通过oj
不过时间复杂度比较高
class Solution {
public:
    /**
     * @param nums an integer array
     * @return nothing, do this in-place
     */
     /*
     void moveZeroes(vector<int>& nums) {
        // Write your code here
        int length=nums.size();
        for(int j=0;j<length;j++){
            for(int i=0;i<length-1-j;i++){
                if(nums[i]==0){
                    //如果当前元素等于0的话,这个元素和下一交换 不管下一个什么什么,一次循环可以确定的是,是最后一个元素编程0
                    int temp=nums[i];
                    nums[i]=nums[i+1];
                    nums[i+1]=temp;
                }
            }
        }
    }
};
*/

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int pw = 0;
        for (int pr = 0; pr < nums.size(); pr++) {
            if (nums[pr] != 0) {
                nums[pw] = nums[pr];
                pw++;
            }
        }

        // 再把pw指向的元素后面的0补上
        for (; pw < nums.size(); pw++) {
            nums[pw] = 0;
        }
    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,768评论 0 33
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,202评论 30 471
  • 题目 给一个数组 nums 写一个函数将0移动到数组的最后面,非零元素保持原数组的顺序 ** 注意事项1.必须在原...
    六尺帐篷阅读 1,681评论 0 2
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,267评论 0 4
  • 本文是战隼老师在喜马拉雅FM的《战隼:无需意思志力的习惯养成法-100天行动》的笔记。如需要原文,请收听节目。如有...
    西西西西力阅读 231评论 0 2