LeetCode 27. 移除元素

文章目录

一、题目

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

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

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

点击此处跳转题目

说明:

为什么返回数值是整数,但输出的答案是数组呢?

请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。

二、C# 题解

很简单的一道题,直接附上代码:

csharp 复制代码
public class Solution {
    public int RemoveElement(int[] nums, int val) {
        int i = 0, j = 0;
        while (true) {
            while (j < nums.Length && nums[j] == val) j++; // 找到下一个不为 val 的元素
            if (j == nums.Length) break;                   // j 越界则结束循环
            nums[i++] = nums[j++];                         // 赋值并后移 i、j
        }
        return i;
    }
}
  • 时间复杂度: O ( n ) O(n) O(n)。
  • 空间复杂度: O ( 1 ) O(1) O(1)。
相关推荐
不会学习?36 分钟前
算法03 归并分治
算法
NuyoahC1 小时前
笔试——Day43
c++·算法·笔试
2301_821919921 小时前
决策树8.19
算法·决策树·机器学习
秋难降2 小时前
别再用暴力排序了!大小顶堆让「取极值」效率飙升至 O (log n)
python·算法·排序算法
学行库小秘2 小时前
基于门控循环单元的数据回归预测 GRU
人工智能·深度学习·神经网络·算法·回归·gru
_meow_3 小时前
数学建模 15 逻辑回归与随机森林
算法·数学建模·逻辑回归
1白天的黑夜13 小时前
链表-24.两两交换链表中的结点-力扣(LeetCode)
数据结构·leetcode·链表
二向箔reverse3 小时前
机器学习算法核心总结
人工智能·算法·机器学习
猿究院--冯磊4 小时前
JVM垃圾收集器
java·jvm·算法
野犬寒鸦5 小时前
力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
java·后端·算法