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++;
            }
        }
    }
};
相关推荐
z人间防沉迷k35 分钟前
堆(Heap)
开发语言·数据结构·笔记·python·算法
hy.z_77738 分钟前
【数据结构】链表 LinkedList
java·数据结构·链表
不二狗1 小时前
每日算法 -【Swift 算法】Two Sum 问题:从暴力解法到最优解法的演进
开发语言·算法·swift
LabVIEW开发1 小时前
LabVIEW中样条插值实现及应用
算法·labview知识
ROCKY_8171 小时前
数据结构——例题3
数据结构
LabVIEW开发1 小时前
LabVIEW机械振动信号分析与故障诊断
算法·labview知识·labview开发案例
ROCKY_8171 小时前
数据结构——例题2
数据结构
Akiiiira1 小时前
【数据结构】队列
java·开发语言·数据结构
啊我不会诶1 小时前
CF每日5题(1300-1500)
算法·深度优先·图论
芒果量化1 小时前
量化交易 - 网格交易策略实现与原理解析
python·算法·机器学习·金融