【LeetCode 75】 第十题(283)移动零

目录

题目:

示例:

分析:

代码+运行结果:


题目:

【LeetCode 75】 第十题(283)移动零_第1张图片

示例:

【LeetCode 75】 第十题(283)移动零_第2张图片

分析:

给一个数组,要求将数组中的零都移动到数组的末尾.

首先我们可以遍历一边数组,遇到0的时候就在数组中把0删除,并且统计0的数量.

遍历完成以后数组中就没有0了,这时我们再在数组的后面添上之前统计的0的数量个0.

如下动图所示:

也可以使用双指针来解决,一样是遍历数组,然后左指针从左遍历数组中第一个0,然后右指针从左指针的右一位开始遍历寻找到第一个非0,再交换双指针所指元素,如此循环即可在保持非0的相对位置的同时将0移动到数组末尾.

如下动图所示:

代码+运行结果:

class Solution {
public:
    void moveZeroes(vector& nums) {
        //非移动
        int zero_num=0;
        int index=0;
        while(index

【LeetCode 75】 第十题(283)移动零_第3张图片

class Solution {
public:
    void moveZeroes(vector& nums) {
        //移动
        int l=0;
        int r,temp;
        while(l=nums.size()) break;
            r=l+1;
            while(r=nums.size()) break;
            temp=nums[l];nums[l]=nums[r];nums[r]=temp;  //交换双指针所指数
        }
    }
};

【LeetCode 75】 第十题(283)移动零_第4张图片

你可能感兴趣的:(LeetCode75题解,leetcode,算法,c++,数据结构)