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

LeetCode 面试经典150题 27.移除元素

题目

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组

元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

思路双指针。前半段是有效部分,存储的是不等于val的元素;后半段是无效部分,存储的是等于val的元素。最终答案返回有效部分的结尾下标。

代码

class Solution {
    public int removeElement(int[] nums, int val) {
        int j = nums.length - 1; // j指向不等于val的最靠后的位置
        for (int i = 0; i <= j; i++) {
            if (nums[i] == val) {
                nums[i] = nums[j];
                nums[j] = val;
                j--;
                i--;
            }
        }
        return j + 1;
    }
}

性能:时间复杂度  O(n)   空间复杂度 O(1)


http://www.kler.cn/news/273719.html

相关文章:

  • 如何搭建“Docker Registry私有仓库,在CentOS7”?
  • Linux-MDK can电机带导轨 C++封装
  • 【Python循环4/5】跳出循环的办法
  • Ubuntu Desktop 设置 gedit
  • HarmonyOS NEXT应用开发—图片压缩方案
  • threejs 实现鼠标大面积选取场景内3d模型,SelectionBox API 案例使用
  • 基于Spring Boot的宿舍管理系统
  • 【Linux】进程---概念---进程---优先级
  • 【Python】进阶学习:一文解决如何从指定的源目录中,挑选出符合条件的文件,并将这些文件复制到目标目录中
  • linux 日志排查
  • Legacy|电脑Windows系统如何迁移到新安装的硬盘?系统迁移详细教程!
  • 如何查看MySQL数据库的连接数
  • node后端helmet中间件
  • XML和JSON的区别
  • [C语言]指针详解一、数组指针、二维数组传参、函数指针
  • 【源码阅读】evmⅠ
  • 高通 8255 基本通信(QUP)Android侧控制方法说明
  • C++开发基础——类对象与构造析构
  • CentOS7使用Docker部署.net Webapi
  • 汽车功能安全整体方法
  • Stream流将List列表中的每个对象赋值给另外一个List列表中的每个对象
  • Java的集合类
  • idea 开发serlvet班级通讯录管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发
  • 阿里云ecs服务器配置反向代理上传图片
  • spring 没完没了
  • flink重温笔记(十七): flinkSQL 顶层 API ——SQLClient 及流批一体化
  • Excel xlsx file:not supported
  • 零基础学python:10、 函数的基础3
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Rect)
  • springboot+poi-tl根据模板导出word(含动态表格和图片),并将导出的文档压缩zip导出