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

[leetcode刷题]面试经典150题之2移除元素(简单)

题目 

移除元素

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

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

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

思路分析:

  1. 双指针法:使用两个指针,一个指针 i 遍历整个数组,另一个指针 j 用于记录不等于 val 的元素的位置。每当我们遇到不等于 val 的元素时,将其放到 j 指针的位置,并将 j 向前移动,最终 j 的值就是不等于 val 的元素数量。
  2. 原地修改:因为我们不需要额外的空间,只需要在原数组上进行操作。

步骤:

  • 定义一个 j 指针,初始化为 0,用于保存不等于 val 的元素。
  • 遍历数组 nums,如果当前元素不等于 val,就将它放到 nums[j],并移动 j 指针。
  • 遍历完成后,j 就是数组中不等于 val 的元素个数。

代码

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        c=0
        for i in range(len(nums)):
            if nums[i]!=val:
                nums[c]=nums[i]
                c+=1


        return c


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

相关文章:

  • 边缘的检测
  • Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
  • neo4j desktop基本入门
  • WebSocket和HTTP协议的性能比较与选择
  • 【OceanBase 诊断调优】—— ocp上针对OB租户CPU消耗计算逻辑
  • 学术论文写作丨机器学习与深度学习
  • pycharm 使用 translation 插件通过openai进行翻译
  • 怎么能让电脑屏幕显示多个监控画面?电脑监控如何多画面显示?
  • 面向切面:单元测试、事务、资源操作
  • UDP实现组播发送端和接收端
  • [Redis] 渐进式遍历+使用jedis操作Redis+使用Spring操作Redis
  • 论文阅读 | 基于流模型和可逆噪声层的鲁棒水印框架(AAAI 2023)
  • 【机器学习】OpenCV入门与基础知识
  • 一种求解无人机三维路径规划的高维多目标优化算法,MATLAB代码
  • Java笔试面试题AI答之设计模式(1)
  • uni-app尺寸单位、flex布局于背景图片
  • Java ETL - Apache Beam 简介
  • 如何使用Privoxy将SOCKS5代理转换为HTTP代理?
  • 数据库(mysql)常用命令
  • 妈妈再也不用担心字符串方法啦!——js String实例方法汇总
  • PicoQuant公司:探索铜铟镓硒(CIGS)太阳能电池技术,引领绿色能源革新
  • MySQL之复合查询与内外连接
  • Qt 读写windows注册表
  • 深度学习02-pytorch-02-张量的拼接操作
  • 零工市场小程序:保障灵活就业
  • java(3)数组的定义与使用