题目:27.移除元素
初始代码
class Solution {
public int removeElement(int[] nums, int val) {
}
}
解题思路
- 使用双指针(快慢指针)
- 用非目标元素的值去替代目标元素的位置, 即示例1中用2后面非2的元素去代替2的位置
- 快指针先走,如果快指针所指当前元素为非目标元素时,慢指针再走
- 当移到目标元素时,慢指针停下不移动,快指针继续移动,找到非目标元素后用快指针所在索引的元素去代替慢指针所指元素
代码
class Solution {
public int removeElement(int[] nums, int val) {
int s = 0;
for (int f = 0; f < nums.length; i++) {
if (nums[f] != val) {
nums[s++] = nums[f];
}
}
return s;
}
}
这里的s作为慢指针,f作为快指针