【力扣hot100题】(103)移动零

其实最简单的办法是遍历一遍,记录出现的非零元素个数,每个非零元素放在对应个数的位置上。

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

但还是想用推荐的双指针做:

(参考了答案)原理是一快一慢指针,保证慢指针前面全是非零元素,快指针和慢指针之前全是0元素,每次保证快指针指向非零元素,慢指针指向零元素,交换快慢指针即可。

cpp 复制代码
class Solution {
public:
    void moveZeroes(vector<int>& nums) {
        int slow=0;
        int n=nums.size();
        while(slow<n&&nums[slow]!=0) slow++;
        int fast=slow;
        while(fast<n&&nums[fast]==0) fast++;
        while(fast<n){
            swap(nums[fast],nums[slow]);
            fast++;
            slow++;
            while(slow<n&&nums[slow]!=0) slow++;
            while(fast<n&&nums[fast]==0) fast++;
        }
    }
};
相关推荐
延凡科技9 小时前
多场景落地复盘:端边云架构无人机智能巡检系统设计与实践
大数据·数据结构·人工智能·科技·架构·无人机·能源
CV-Climber9 小时前
检索技术的实际应用
人工智能·算法
hhzz10 小时前
Tiger AI Platform平台中增加人脸识别功能
图像处理·人工智能·算法·计算机视觉·大模型
从零开始的代码生活_11 小时前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
TsingtaoAI11 小时前
3D高斯泼溅技术发展及其在具身智能领域的应用综述
人工智能·算法·ai·具身智能·高斯泼溅
atunet11 小时前
关于图算法中的连通分量检测与最小割问题7
算法
心运软件12 小时前
银行客户流失预测(Python 完整实战)
算法
邪神与厨二病12 小时前
牛客周赛 Round 153
python·算法
qizayaoshuap14 小时前
# ❌ 井字棋 — 鸿蒙ArkTS Minimax AI算法与博弈系统设计
人工智能·算法·华为·harmonyos
皓月斯语14 小时前
B3842 [GESP202306 三级] 春游 题解
数据结构·c++·算法·题解