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

2024-02-20 19:13:52 浏览数 (1)

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

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

代码语言:javascript复制
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;
    }}

0 人点赞