27. 移除元素

题目:

思路:

【1】采用快排中对元素进行互换的方式(双指针做法):

首先是要明确题目说什么
1.返回的是 数组长度
其次会根据数组长度输出对应的元素值
即数组为[3,2,2,3]
返回1,输出的是[3]
返回2,输出的是[3,2]
返回3,输出的是[3,2,2]
所以必须要对原本数组里面的不符合的元素进行变更

也就是如果数组为[3,2,4,2,3] , val = 4
那么是否考虑过将下标值为2的元素4 与 下标值为4的元素3进行互换呢
即变为[3,2,3,2,4]
然后返回长度4,把最后的元素4排除即为结果

当然由于4没什么用所以其实只要覆盖了也是可以的

 

代码展示:

//时间0 ms 击败 100%
//内存40.2 MB 击败 20.85%
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 @ 2023-06-16 11:49  忧愁的chafry  阅读(5)  评论(0编辑  收藏  举报