LeetCode【27. 移除元素】

为国捐躯赴战场,丹心可并日争光。

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

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

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

解答:java

public class Solution {
    public int removeElement(int[] nums, int val) {
        int n = nums.length;
        int j = 0; // 慢指针

        for (int i = 0; i < n; i++) {
            if (nums[i] != val) {
                nums[j] = nums[i];
                j++;
            }
        }

        return j;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums1 = {3, 2, 2, 3};
        int val1 = 3;
        int len1 = solution.removeElement(nums1, val1);
        System.out.println(len1);  // 输出 2
        for (int i = 0; i < len1; i++) {
            System.out.print(nums1[i] + " ");
        }
        System.out.println();  // 输出 2 2

        int[] nums2 = {0, 1, 2, 2, 3, 0, 4, 2};
        int val2 = 2;
        int len2 = solution.removeElement(nums2, val2);
        System.out.println(len2);  // 输出 5
        for (int i = 0; i < len2; i++) {
            System.out.print(nums2[i] + " ");
        }
        System.out.println();  // 输出 0 1 3 0 4
    }
}

猜你喜欢

转载自blog.csdn.net/s_sos0/article/details/132912933