当前位置: 首页 > news >正文

力扣27.移除元素(双指针)

题目看起来很乱,实际上意思是:把数组中值不等于val的元素放在下标为0,1,2,3......,并且返回数组中值不等于val的元素的个数

方法一:直接判断+覆盖

class Solution 
{
public:
    int removeElement(vector<int>& nums, int val) 
    {
        int k=0;
        for(int x:nums)
        {
            if(x!=val)
            {
                nums[k++]=x;
            }
        }
        return k;
    }
};

方法二:快慢指针

class Solution 
{
public:
    int removeElement(vector<int>& nums, int val) 
    {
        int slowindex=0;
        for(int fastindex=0;fastindex<nums.size();fastindex++)
        {
            if(nums[fastindex]!=val)
            {
                nums[slowindex++]=nums[fastindex];
            }
        }
        return slowindex;
    }
};

解释一下:一开始快慢指针都指向第一个元素,接着快指针往后遍历。如果快指针指向的元素的值不等于val,那么先覆盖,然后慢指针也跟着往后遍历,这保证了不等于val的元素都放在了前面。如果值等于val,那么慢指针停下,快指针继续移动,直到遇见了不等于val的元素,再将其进行覆盖。最后快指针指向末尾,快指针与慢指针之间的差值就是等于val的元素的个数,因此慢指针的值就是不等于val的元素个数

相关文章:

  • go前后端开源项目go-admin,本地启动
  • 在Linux上使用APT安装Sniffnet的详细步骤
  • 哈希表和STL —— unorderde_set/unordered_map【复习笔记】
  • 深入理解 JavaScript 中的 call、apply 和 bind
  • 《C++深拷贝与浅拷贝:内存安全的拷贝构造函数实践》
  • 【AI认知】大语言生成模型和推理模型的技术差异和应用区别
  • 2025.3.1有关c++类的学习
  • 【树莓派学习】树莓派3B+的安装和环境配置
  • 【数据库初阶】索引(1)
  • Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
  • 随机树算法 自动驾驶汽车的路径规划 静态障碍物(Matlab)
  • ragflow-mysql 启动失败案例分析
  • Linux常见基本指令(一)
  • LeetCode--76. 最小覆盖子串
  • 算法训练(leetcode)二刷第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列
  • 实验:k8s+keepalived+nginx+iptables
  • 鸿蒙5.0实战案例:基于原生能力获取视频缩略图
  • PyQt——信号与槽
  • 橙心同步助手更新,,支持博客园、头条和语雀
  • 数据结构--队列(C语言实现)
  • 京东CEO许冉:外卖日单量接近2000万单,看到外卖对平台拉动和转化效应
  • 深一度|在亚马尔的天才面前,姆巴佩戴上“帽子”又如何
  • 干部任职公示:陕西宁强、镇安两县县长拟进一步使用
  • 浙江首个核酸药谷落子杭州,欢迎订阅《浪尖周报》第23期
  • 习近平将出席中国—拉美和加勒比国家共同体论坛第四届部长级会议开幕式并发表重要讲话
  • 为发期刊,高校学者偷贩涉密敏感数据!国安部披露间谍案细节