3_27.移除元素

题目描述:
image
解题思路:

  • 第一思路:
    看到这个题目,原地移除的算法,并且要求O(1)的额外空间,已经想到了双指针。于是就一直往这个思路上靠。
  • 题解中的双指针优化:
    image
    image
    代码:
双指针
class Solution {
    public int removeElement(int[] nums, int val) {
        int len = nums.length;
        int slow = -1;
        int fast = 0;
       while(fast < len){
           if (nums[fast] != val){
               slow ++;
               nums[slow] = nums[fast];
           }
           fast++;
       }
       return slow+1;
    }
}
双指针优化
class Solution {
    public int removeElement(int[] nums, int val) {
        int left = 0;
        int right = nums.length;
        while (left < right) {
            if (nums[left] == val) {
                nums[left] = nums[right - 1];
                right--;
            } else {
                left++;
            }
        }
        return left;
    }
}

posted @ 2021-10-15 22:36  Forrestyu  阅读(42)  评论(1)    收藏  举报