快慢指標刪除陣列目標值

2021-10-14 15:14:56 字數 1375 閱讀 8123

給你乙個陣列 nums 和乙個值 val,你需要 原地 移除所有數值等於 val 的元素,並返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須僅使用 o(1) 額外空間並 原地 修改輸入陣列。

元素的順序可以改變。你不需要考慮陣列中超出新長度後面的元素。

快慢指標的做法比較有趣,只需要乙個 for 迴圈即可解決,時間複雜度為 o(n) ,總體思路就是有兩個指標,前面乙個後面乙個,前面的用於搜尋需要刪除的值,當遇到需要刪除的值時,前指標直接跳過,後面的指標不動,當遇到正常值時,兩個指標都進行移動,並修改慢指標的值。最後只需輸出慢指標的索引即可。

最後由

刪除2後

變為了

返回i+1,就是慢指標的下標。

class

solution

int i =0;

for(

int j =

0; j < nums.length;

++j)

// 不等於目標值時,則賦值給num[i],並移動i指標+1

nums[i++

]= nums[j];}

return i;

}}

1095 山脈陣列中查詢目標值

這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。所謂山脈陣列,即陣列 a 假如是乙個山脈陣列的話,需要滿足如下條件 首先,...

1095 山脈陣列中查詢目標值

這是乙個 互動式問題 給你乙個 山脈陣列 mountainarr,請你返回能夠使得 mountainarr.get index 等於 target 最小 的下標 index 值。如果不存在這樣的下標 index,就請返回 1。何為山脈陣列?如果陣列 a 是乙個山脈陣列的話,那它滿足如下條件 首先,a...

The six Day 陣列中找出和為目標值

class solution object 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。示例 給定 nums 2,7,11,15 target...