LeetCode——27. 移除元素

目录

  • 1.问题描述
  • 2.解决办法
    • 1.双指针法
  • 3.代码实现

1.问题描述

LeetCode——27. 移除元素_第1张图片
LeetCode——27. 移除元素_第2张图片

2.解决办法

1.双指针法

双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。

右指针 right 指向当前将要处理的元素,左指针 left 指向下一个将要赋值的位置。

如果右指针指向的元素不等于val,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移;

如果右指针指向的元素等于val,它不能在输出数组里,此时左指针不动,右指针右移一位。

3.代码实现

class Solution {
    public int removeElement(int[] nums, int val) {

        // 快慢指针
        int fastIndex = 0;
        int slowIndex;
        for (slowIndex = 0; fastIndex < nums.length; fastIndex++) {
            if (nums[fastIndex] != val) {
                nums[slowIndex] = nums[fastIndex];
                slowIndex++;
            }
        }
        return slowIndex;

    }
}

你可能感兴趣的:(算法,leetcode,算法,链表)