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

题目

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

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

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

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

代码

java 复制代码
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)

相关推荐
coder!mq11 小时前
说几个常见的语法糖?
java·开发语言·算法
不爱学英文的码字机器12 小时前
推荐算法梳理,六种主流模型与九步训练流程
算法·机器学习·推荐算法
白狐_79813 小时前
408数据结构第5章:树与二叉树②——遍历、线索树、森林与哈夫曼
数据结构·算法·深度优先
众人皆醒我独醉15 小时前
分布式训练与 Ring AllReduce:从单卡绝望到多卡协同
人工智能·面试·llm
LiLiYuan.15 小时前
【字符串常量池】
java·开发语言·面试
致Great16 小时前
科研人的 AI,不该只回答问题:我用字节TraeWork 跑了一遍真实研究任务
算法
纵有疾風起16 小时前
线性表的定义与基本操作 — 从逻辑结构到 ADT 接口
数据结构·算法·408·线性表·adt
测试_AI_一辰16 小时前
AI Agent 评测最隐蔽的坑-记忆
人工智能·算法·ai·自动化·ai编程
lucas_AI17 小时前
给YOLO检测器插 LoRA,'插对地方'比'插什么'更要命
人工智能·算法
LuminousCPP17 小时前
数据结构-时间与复杂度|时间/空间复杂度 + 两道力扣练习 + 二分查找复盘
c语言·数据结构·经验分享·算法·leetcode