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

算法练习2——移除元素

LeetCode 27 移除元素

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。
不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

双指针
双向遍历双指针

class Solution:def removeElement(self, nums: List[int], val: int) -> int:if not nums:return 0i, j = 0, len(nums) - 1while (i <= j):for k in range(i, j + 1):i = kif nums[k] == val:breakfor k in range(j, i - 1, -1):j = kif nums[k] != val:breaknums[i], nums[j] = nums[j], nums[i]if i == j:breaki += 1j -= 1return i + 1 if nums[i] != val else i

下面是官方题解

作者:力扣官方题解
链接:https://leetcode.cn/problems/remove-element/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

单向遍历双指针

func removeElement(nums []int, val int) int {left := 0for _, v := range nums { // v 即 nums[right]if v != val {nums[left] = vleft++}}return left
}

双向遍历双指针

func removeElement(nums []int, val int) int {left, right := 0, len(nums)for left < right {if nums[left] == val {nums[left] = nums[right-1]right--} else {left++}}return left
}
http://www.lryc.cn/news/180594.html

相关文章:

  • 动态规划算法(2)--最大子段和与最长公共子序列
  • CentOS上网卡不显示的问题
  • localStorage实现历史记录搜索功能
  • 计算机网络(一):概述
  • visual code 下的node.js的hello world
  • MySQL——四、SQL语句(下篇)
  • 蓝桥杯每日一题2023.10.2
  • 红外遥控器 数据格式,按下及松开判断
  • win32进程间通信方式(13种)
  • 基于Vue+ELement搭建动态树与数据表格实现分页模糊查询
  • 多线程案例 - 单例模式
  • 云原生Kubernetes:对外服务之 Ingress
  • Java21 新特性
  • Rest Template 使用
  • IDEA git操作技巧大全,持续更新中
  • 计算机操作系统 (王道考研)笔记(四)I/O系统
  • 【Java基础】抽象类和接口的使用
  • Golang的性能优化
  • 实现两栏布局的五种方式
  • 博物馆门票预约APP的设计与实现(源码+lw+部署文档+讲解等)
  • 【AI视野·今日Robot 机器人论文速览 第四十四期】Fri, 29 Sep 2023
  • 一维数组和二维数组的使用(char类型)
  • 1.基本概念 进入Java的世界
  • 程序在线报刊第一期
  • k8s 拉取镜像报错 no basic auth credentials
  • Koa处理请求数据
  • 关于浮点数的 fld、fadd、fstp 汇编指令介绍
  • 知识图谱小白入门(1):neo4j的安装与CQL的使用
  • 一个用java的get请求
  • 作为SiteGPT替代品,HelpLook的优势是什么?