【LeetCode】27. 移除元素

题目:27. 移除元素


解题思路

  • 给定一个数组,以及一个需要删除的值;要求在 O(1) 的空间复杂度中完成
  • 可考虑采用快慢指针的方式,left 用于记录当前需要进行替换的元素,right 指针用于遍历整个数组
  • 当 right 指针所指的值是待删除元素时,那么 right 右移,left 不动即可
  • 若不是,那么将 right 所指值赋值给left即可
  • 当 left 和 right 指向同一位置是否有影响?当前 right 所指值不需要删除,所以将 right 所指位置的值赋值给 left,即将当前位置的元素赋值给当前元素,自己替换自己,不影响结果。

# Java代码实现
class Solution {
    public int removeElement(int[] nums, int val) {
        if(nums == null || nums.length == 0){
            return 0;
        }

        int left = 0;
        for(int right=0; right<nums.length; right++) {
            if(nums[right] != val) {
                nums[left] = nums[right];
                left++;
            }
        }

        return left;
    }
}

```java class Solution { public int removeElement(int[] nums, int val) { int left = 0, right = 0; while(right < nums.length) { if(nums[right] != val) { nums[left] = nums[right]; left++; right++; } else { right = right + 1; } } return left; } } ```

参考资料:27. 移除元素

posted @ 2024-01-21 16:25  是你亦然  阅读(5)  评论(0编辑  收藏  举报