【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 @   是你亦然  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示