力扣题目链接
解题思路
首先很容易想到暴力解法,用两个for循环,第一个for循环用来遍历整个数组,第二个for循环用来更新数组.但这种解法的时间复杂度为O(n^2)
因此考虑双指针思想,通过一个快指针和慢指针在一个for循环下完成两个for循环的任务,其中,快指针用来寻找新的元素,即和目标值不相同的元素.慢指针用来指向这些元素.
代码
class Solution {public int removeElement(int[] nums, int val) {int idx = 0;for (int x : nums ){if ( x != val) nums[idx ++] = x;}return idx; }
}