leetcode 283. 移动零

博客介绍了用C++解决Move Zeroes问题,采用双指针法,实现一次遍历,时间复杂度为O(n),且未使用额外空间。运行时间12ms,超过99.76%的C++在线提交;内存使用9.5MB,优于59.39%的提交。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

Runtime: 12 ms, faster than 99.76% of C++ online submissions for Move Zeroes.

Memory Usage: 9.5 MB, less than 59.39% of C++ online submissions for Move Zeroes.

相当于一次遍历,O(n)时间复杂度。没有用额外空间。

     //双指针法补0
    //可以用双指针的情况:
    //同一个数组,不用额外的空间  

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
    //双指针法补0
    //可以用双指针的情况:
    //同一个数组,不用额外的空间  
    int i=0,j=0;//i始终大于等于j
    for(;i<nums.size();i++)//i用来遍历
    {
        if(nums[i]!=0)//需要赋值给nums[j]
        {
            if(i!=j)
            {
                nums[j]=nums[i];
            }
            j++;
        }
        
    }
    while(j<nums.size())
    {
        nums[j++]=0;
    }
    }
};

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值