注意,在本題中,是對原數組進行操作,需要原地刪除指定元素,所以我們可以采用快慢指針來操作。
顧名思義,快慢指針是有兩個指針,一直快指針,一個慢指針。在本題中,快慢指針起點都是0,開始的時候,當沒有遇到要刪除的元素的時候,快慢指針都一步一步向前走,此時即使二者替換也是一樣的數據。遇到要刪除的元素的時候,這個時候我們先不進行元素的替換,然后把慢指針留下,快指針向前走一步,此時二者之間出現了位移差。然后再繼續向后走,如果不是要刪除的元素,這時候把快指針位置的元素替換到慢指針的位置,此時就完成了指定元素的刪除。
最終我們返回慢指針即可。
class Solution {public int removeElement(int[] nums, int val) {// 快慢指針int slowIndex = 0;for (int fastIndex = 0; fastIndex < nums.length; fastIndex++) {if (nums[fastIndex] != val) {nums[slowIndex] = nums[fastIndex];slowIndex++;}}return slowIndex;}
}