LeetCode100.4 移动零

不能复制数组,必须原地操作,只能用双指针了。一个正常遍历数组,另一个记录最左侧0的下标。

cpp 复制代码
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        vector<int> ans(nums.size(), 0);
        int j = 0;
        for(int i = 0;i<nums.size();i++){
            if(nums[i]) ans[j++] = nums[i];
        }
        nums = ans;
    }
};

更符合题意的答案:

cpp 复制代码
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int j = 0;
        for (int &i : nums) {
            if (i) {
                swap(i, nums[j]);
                j++;
            }
        }
    }
};
相关推荐
市场部需要一个软件开发岗位1 分钟前
一个无人机平台+算法监督平台的离线部署指南
java·python·算法·bash·无人机·持续部署
ygklwyf4 分钟前
零基础薄纱树套树——高级数据结构的结合
算法·线段树·树状数组·树套树
Hello World . .17 分钟前
排序算法:常用排序算法
c语言·数据结构·算法·vim·排序算法
寻寻觅觅☆24 分钟前
东华OJ-基础题-86-字符串统计(C++)
开发语言·c++·算法
偷吃的耗子26 分钟前
【CNN算法理解】:MNIST手写数字识别训练过程
算法·机器学习·cnn
念越32 分钟前
从概念到实现:深入解析七大经典排序算法
java·算法·排序算法
虢薪32 分钟前
双向链表与循环链表基础操作&进阶操作
数据结构·链表
寄存器漫游者34 分钟前
数据结构 单向链表进阶
数据结构·链表
shilei_c37 分钟前
qt qDebug无输出问题解决
开发语言·c++·算法
秋深枫叶红40 分钟前
嵌入式C语言阶段复习——函数
c语言·数据结构·算法