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

数组_移除元素

数组_移除元素

  • 一、leetcode-27
  • 二、题解
    • 1.代码
    • 2.思考


一、leetcode-27

移除元素
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k。

样例输入:nums = [3,2,2,3], val = 3

样例输出: 2, nums = [2,2,,]

解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。
你在返回的 k 个元素之外留下了什么并不重要(因此它们并不计入评测)。


二、题解

1.代码

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

2.思考

使用快慢指针不需要每次都把后面所有的元素往前移,这样只要遍历一次
当快指针等于val,什么都不做直接后移fast
当快指针不等于val,把值赋给慢指针,快慢指针一起后移


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

相关文章:

  • jenkins-获取当前时间戳
  • Bash 中的运算方式
  • 基于Spring Boot的视频点播系统设计与实现(LW+源码+讲解)
  • 智元机器人开源AgiBot World数据集:具身智能领域的“ImageNet时刻”
  • 计算机毕业设计——Springboot的社区维修平台
  • Unity下ML-Agents第一个示例
  • 【Android开发】安卓手机APP使用机器学习进行QR二维码识别(完整工程资料源码)
  • pgsql用户和权限管理
  • LLM论文笔记 6: Training Compute-Optimal Large Language Models
  • Unity使用反射进行Protobuf(CS/SC)协议,json格式
  • [隧道代理] 隧道代理 — 反弹 Shell - Bash 反弹 Shell
  • 「软件设计模式」建造者模式(Builder)
  • 深入浅出CSS复合选择器:掌控元素关系与层级选择
  • 冒泡排序的缺陷及优化
  • HtmlRAG:RAG系统中,HTML比纯文本效果更好
  • 面向 Data+AI 的新一代智能数仓平台
  • flutter doctor 报错—CocoaPods not installed
  • Java实现HTTPS双向认证的终极指南:从原理到实战
  • [创业之路-297]:经济周期与股市、行业的关系
  • Git 查看修改记录 二