🌗 27. 移除元素

吞佛童子2022年6月9日
  • algorithm
  • array
小于 1 分钟

🌗 27. 移除元素

难度: 🌗

问题描述

img_11.png


解法

class Solution {
    public int removeElement(int[] nums, int val) {
        // 思路:
        // 双指针法
        int len = nums.length;
        // 特殊情况特判
        if(len == 0) {
            return 0;
        }
        int left = 0;
        int right = len - 1;
        while(left < right) {
            while(left < right && nums[left] != val) {
                left ++;
            }
            while(left < right && nums[right] == val) {
                right --;
            }
            swap(nums, left, right); // 原地交换
        }
        // left == right
        if(nums[left] == val) {
            return left; // 返回的是 长度而非下标
        } else {
            return left + 1;
        }
    }

    private void swap(int[] nums, int left, int right) {
        int tmp = nums[left];
        nums[left] = nums[right];
        nums[right] = tmp;
    }
}

输出

img_10.png

上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou