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; } }