欢迎光临散文网 会员登陆 & 注册

力扣:283. 移动零

2023-03-11 19:41 作者:薄荷硬糖酱  | 我要投稿

题目:

283. 移动零

难度简单1918收藏分享切换为英文接收动态反馈

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

 

示例 1:

输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]输出: [0]

 

提示:

  • 1 <= nums.length <= 104

  • -231 <= nums[i] <= 231 - 1

 

进阶:你能尽量减少完成的操作次数吗?

题目理解:为什么可以用双指针?题目中提到了针对某种数的移动操作

第一种法:

class Solution {

public:

    void moveZeroes(vector<int>& nums) {

        int fast=0,slow=0;

        while(fast<nums.size()){

            if(nums[fast]){

                swap(nums[fast],nums[slow]);

                slow++;

            }

            fast++;

        }

    }

};

使用了双指针,时间复杂度为O(n)

力扣:283. 移动零的评论 (共 条)

分享到微博请遵守国家法律