
image.png
public int removeElement(int[] nums, int val) {
int slow = 0;
for (int fast = 0; fast < nums.length; fast++) {
if (nums[fast] != val) {
nums[slow] = nums[fast];
slow++;
}
}
return slow;
}
- 思路
雙指針解法, 一開(kāi)始讓slow和fast都指向數(shù)組索引0
開(kāi)始循環(huán)遍歷, 判斷 nums[fast] 指向的數(shù)值!=要?jiǎng)h除的元素, 則讓nums[fast]的值 覆蓋 nums[slow]的值, 兩個(gè)指針同時(shí)向前移動(dòng), 當(dāng)nums[fast]的值 = target時(shí), 讓fast跳過(guò), 不給slow賦值,這樣相當(dāng)于跳過(guò)了要?jiǎng)h除的target, 當(dāng)fast遍歷結(jié)束試, nums中剩下的數(shù)值就都是過(guò)濾掉target的數(shù)組, slow的大小就是移除元素后的數(shù)組大小.