调用博主最近登录时间
生活中的HYGGE
力扣每日一题-27. 移除元素

力扣每日一题-27. 移除元素

hygge
2024-07-01 / 0 评论 / 46 阅读 / 正在检测是否收录...

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。

假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作:

  • 更改 nums 数组,使 nums 的前 k 个元素包含不等于 val 的元素。nums 的其余元素和 nums 的大小并不重要。
  • 返回 k。

ly2frh8i.png
解法1: 双指针算法

public class Main {
    public static void main(String[] args) {
        int[] nums = new int[]{3, 2, 2, 3};
        int result = removeElement(nums, 3);
        System.out.println(result);
    }

    // 解法1:双指针算法
    public static int removeElement(int[] nums, int val) {
        int k = 0;
        for (int i = 0 ; i < nums.length;i ++){
            if(nums[i] != val)
                nums[k++] = nums[i];
        }
        return k;
    }

  // 解法2: 双指针优化算法
    public static int removeElement(int[] nums, int val) {
        int n = nums.length;
        int u = 0;
        while (u < n) {
            if (nums[u] == val) nums[u] = nums[n-- - 1];
            else u++;
        }
        return u;
    }
}

引用

原题:https://leetcode.cn/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150

0

评论 (0)

取消