每日算法(双指针算法)(Day 1)

双指针算法

1.算法题目(移动零)

2.讲解算法原理

数组划分,数组分块(快排里面最核心的一步)只需把0改为tmp

双指针算法:利用数组下标来充当指针

两个指针的作用:
cur:从做往右扫描数组,遍历数组
dest:已处理的区间内,非零元素的最后一个位置

三个区间:

0,dest\] ,\[dest+1,cur-1\] , \[cur,n-1

按序依次是非0,0,待处理

  • 当cur=n时 变成


先让dest指向下标为-1的位置,cur指向下标为0的元素,此时元素为0,cur++,cur指向的元素为1,这时dest++,然后交换dest和cur指向的元素,也就是交换0和1的位置。

总结:cur从前往后遍历的过程中

  1. 遇到0元素:cur++
  2. 遇到非0元素:
cpp 复制代码
swap(dest+1,cur);
dest++,cur++;

3.编写代码

cpp 复制代码
class Solution {
public:
    void moveZeroes(vector<int>& nums)
    {
        for (int cur = 0; int dest = -1; cur < nums.size(); cur++)
            if (nums[cur])//处理非零元素
                swap(nums[++dest], nums[cur]);
    }
};
相关推荐
落羽的落羽8 分钟前
【C++】C++17的主要特性
linux·服务器·开发语言·c++·算法·机器学习
【心态好不摆烂】44 分钟前
数据结构基础精讲3
数据结构·算法
漂流瓶jz2 小时前
UVA-1613 K度图的着色 题解答案代码 算法竞赛入门经典第二版
算法·深度优先·图论·贪心·aoapc·算法竞赛入门经典·uva
Pniubi3 小时前
动态规划入门 ( - 力扣509斐波那契数)
算法·动态规划
暴走约伯3 小时前
【VFX工具链源码拆解 09】终极工业化闭环:基于 ID 规则驱动的全自动场景建档、骨骼挂载与男转女场景迁移
unity·c#·游戏引擎·材质
吴长建先生重名了4 小时前
GitHub Actions部署报表系统踩坑记:幂等性与限
算法
贝壳6904 小时前
一个2026年2月才上传的库,凭什么敢碰2009年就有人写烂的题目
算法
贝壳6905 小时前
同一道三亿位选型题,三个AI给了我三个答案,我把它们拉进同一台机器复跑
算法
汉克老师6 小时前
《从C++小白到算法高手:GESP 1—8级成长地图》第一讲:认识GESP——从编程新手到算法探索者
c++·gesp·信息学竞赛·小学生学c++