27. 移除元素

2023-11-16

27. 移除元素 - 力扣(LeetCode)

思路:双指针

class Solution {
    public int removeElement(int[] nums, int val) {
        //双指针
        int j=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=val){
                nums[j]=nums[i];
                j++;
            }
        }
        return j;
    }
}

 

优化;

        双指针优化

        如果要移除的元素恰好在数组的开头,我们需要把每一个元素都左移一位。注意到题目中说:「元素的顺序可以改变」。

class Solution {
    public int removeElement(int[] nums, int val) {
        //双指针优化
        //如果要移除的元素恰好在数组的开头,我们需要把每一个元素都左移一位。注意到题目中说:「元素的顺序可以改变」。
 
 
        int l=0;
        int r=nums.length-1;
 
        while(l<r){
            if(nums[l]==val){
                nums[l]=nums[r];
                r--;
            }else{
                l++;
            }
        }
 
        return l+1;
 
    }
}

 

posted @ 2023-11-16 10:21  追梦•少年  阅读(7)  评论(0)    收藏  举报