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

【Leetcode】27.移除元素

题目链接:
https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150

题目描述:
在这里插入图片描述
解题思路:

使用双指针算法,指针p1指向列表的首元素,指针p2指向列表的末尾元素,使用res记录返回值

  • 1.当指针p2指向的元素等于val时,此时val已经在末尾了,因此需要将指针p2前移一位即可,并且continue,直到指针p2移动到不等于val的位置
  • 2.当指针p1指向的元素等于val时,由于此时p2指向的元素不等于val,但是指针p2之后的元素等于val,因此将p1位置的元素与p2位置元素交换即可
  • 3.while循环结束条件:p1<=p2
  • 时间复杂度O(n)
  • 空间复杂度O(1)

实现代码:

class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int p1 = 0;
        int p2 = nums.size()-1;
        int res = 0;

        while(p1 <= p2){
            if(nums[p2]==val){
                p2--;
                continue;
            }
            if(nums[p1]==val){
                nums[p1] = nums[p2];
                p1++;
                p2--;
                res++;
            }else{
                p1++;
                res++;
            }
        }

        return res;
    }
};

http://www.kler.cn/a/421233.html

相关文章:

  • MySQL需掌握到何种程度?才能胜任工作
  • Day 32 动态规划part01
  • 更换 Git 项目的远程仓库地址(五种方法)
  • 修改MVCActiveRecord支持匿名函数(用于动态决定数据库连接)
  • Linux -初识 与基础指令2
  • kube-proxy的iptables工作模式分析
  • 【大数据学习 | 面经】Spark 3.x 中的AQE(自适应查询执行)
  • Vue教程|搭建vue项目|Vue-CLI新版脚手架
  • 【HarmonyOS】鸿蒙应用使用lottie动画
  • 【SpringBoot】29 基于HttpClient的Http工具类
  • [自然语言处理] NLP-RNN及其变体-干货
  • Python 网络爬虫入门全知道
  • 分布式推理框架 xDit
  • 【threejs】实现不同动画的播放和平滑切换
  • (长期更新)《零基础入门 ArcGIS(ArcMap) 》实验三----学校选址与路径规划(超超超详细!!!)
  • <数据集>路面坑洼识别数据集<目标检测>
  • 王道操作系统目录以及学习感受和总结
  • 《向量数据库指南》——Florence:多模态应用的新基石!
  • 2024年大热,Access平替升级方案,也适合Excel用户
  • Vuex的理解及使用场景
  • 南昌榉之乡托养机构解读:自闭症与看电视并无必然联系
  • 大数据新视界 -- Hive 数据湖架构中的角色与应用(上)(25 / 30)
  • CTF之WEB(sqlmap tamper 参数)
  • 零基础快速掌握——【c语言基础】数组的操作,冒泡排序,选择排序
  • 基于单片机的智能宠物喂食系统设计
  • 华为HarmonyOS 让应用快速拥有账号能力 -- 2 获取用户头像昵称