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++;
            }
        }
    }
};
相关推荐
谢白羽2 分钟前
vllm抢占机制详解
算法·vllm
Hello--_--World2 分钟前
Vue2的 双端 diff算法 与 Vue3 的 快速diff 算法
前端·vue.js·算法
XiYang-DING10 分钟前
【Java】二叉树
java·开发语言·数据结构
坚持编程的菜鸟10 分钟前
The Blocks Problem
数据结构·c++·算法
2301_8227032011 分钟前
Flutter 框架跨平台鸿蒙开发 - 家庭时间胶囊应用
算法·flutter·华为·图形渲染·harmonyos·鸿蒙
tankeven11 分钟前
HJ171 排座椅
c++·算法
2301_8227032018 分钟前
成语小词典:鸿蒙Flutter实现的成语查询与管理应用
算法·flutter·华为·开源·图形渲染·harmonyos
Bczheng119 分钟前
八.账号生成规则 哈希 密钥
算法·哈希算法
黎阳之光20 分钟前
视频孪生领航者,以中国技术定义全球数智化新高度
大数据·人工智能·算法·安全·数字孪生
6Hzlia21 分钟前
【Hot 100 刷题计划】 LeetCode 39. 组合总和 | C++ 回溯算法与 startIndex 剪枝
c++·算法·leetcode