当前位置: 首页 > 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的元素个数

http://www.dtcms.com/a/47589.html

相关文章:

  • 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语言实现)
  • 【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees 学习笔记
  • EMO模型详解及代码复现
  • (保姆级教程)Windows系统本地部署通义万相2.1视频生成模型
  • C++双指针法(尺取法)原理及模板代码与例题
  • 基于springboot的酒店客房管理系统----数据库课程设计
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JavaWeb的诞生:从 CGI 到 Servlet 的技术演进
  • VulnHub-DarkHole_2靶机搭建保姆级教程2025
  • C++杂记——RAII (Resource Acquisition Is Initialization)
  • 【Java项目】基于SpringBoot的会员制医疗预约服务管理信息系统
  • 算法 BFS搜爆路径问题