力扣27
快慢双指针
class Solution {
public int removeElement(int[] nums, int val) {
int slow, fast, lens;
slow =fast = 0;
lens = nums.length;
while(fast < lens)
{
if(nums[fast] != val)
{
nums[slow++] = nums[fast];
}
fast++;
}
return slow;
}
}
对撞双指针
class Solution {
public int removeElement(int[] nums, int val) {
int slow,fast;
slow = 0;
fast = nums.length - 1;
while(fast >= slow)
{
if(nums[slow] == val && nums[fast] != val)
{
nums[slow] = nums[fast--];
}
if(nums[slow] != val)
slow++;
if(nums[fast] == val)
fast--;
}
return slow;
}
}
对撞双指针+覆盖
class Solution {
public int removeElement(int[] nums, int val) {
int slow,fast;
slow = 0;
fast = nums.length - 1;
while(fast >= slow)
{
if(nums[slow] == val)
{
nums[slow] = nums[fast--];
}else
slow++;
}
return fast + 1;
}
}