27. 移除元素 Leetcode经典面试题

简介: 27. 移除元素 Leetcode经典面试题

这个算法是用来从一个整数数组 nums 中移除所有值等于给定整数 val 的元素,并返回新数组的长度。

  1. 使用两个指针 in,其中 i 用于遍历原始数组 nums,而 n 用于跟踪新数组中的位置。
  2. 从头开始遍历nums数组,对于每个元素nums[i],进行以下检查:
  • 如果 nums[i] 不等于 val,将其复制到新数组的位置 n,然后递增 n
  • 如果 nums[i] 等于 val,则跳过,不将其包含在新数组中。
  1. 继续遍历整个数组,直到 i 到达数组的末尾。
  2. 返回 n 的值,这个值表示新数组中的不包含等于 val 的元素的长度。

这个算法的核心思想是通过遍历数组一次,将不等于 val 的元素逐个复制到新数组的开头,同时保持新数组的长度,以达到删除所有等于 val 的元素的目的。这是一种高效的方式,因为它只需要一次遍历数组,时间复杂度为 O(n),其中 n 是数组的长度。

举个例子,如果原始数组 nums[3, 2, 2, 3, 4, 5, 2],并且 val 为 2,使用这个算法后,新数组会变成 [3, 3, 4, 5],同时返回值 n 为 4,表示新数组的长度。

时间复杂度为O(n)

class Solution {
    public int removeElement(int[] nums, int val) {
       int n = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val) {
                nums[n] = nums[i];
                n++;
            }
        }
        return n;
    }}


相关文章
|
9天前
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
[leetcode~dfs]1261. 在受污染的二叉树中查找元素
|
14天前
|
存储 算法
代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十九天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
21 1
|
14天前
|
算法
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
代码随想录算法训练营第五十七天 | LeetCode 739. 每日温度、496. 下一个更大元素 I
15 3
|
18天前
|
算法
【力扣】169. 多数元素
【力扣】169. 多数元素
|
1月前
|
C++ 索引
【力扣经典面试题】14. 最长公共前缀
【力扣经典面试题】14. 最长公共前缀
|
1月前
|
C++
【力扣经典面试题】58. 最后一个单词的长度
【力扣经典面试题】58. 最后一个单词的长度
|
1月前
|
算法 Java
【力扣经典面试题】12. 整数转罗马数字
【力扣经典面试题】12. 整数转罗马数字
|
1月前
|
索引
[经典力扣面试题]135. 分发糖果
[经典力扣面试题]135. 分发糖果
|
1月前
|
算法 C++ 索引
【力扣经典面试题】238. 除自身以外数组的乘积
【力扣经典面试题】238. 除自身以外数组的乘积
|
1月前
|
算法 索引
【力扣经典面试题】274. H 指数
【力扣经典面试题】274. H 指数

热门文章

最新文章