python解題 刪除排序陣列中的重複項

2021-10-22 00:17:29 字數 1053 閱讀 1129

題目中要求的是原地修改陣列,一開始我的想法是碰到相同的後面就往前平移,這樣工作量也比較大,而且range的時候範圍不能改變,導致**很複雜,參考了大神的答案,這個快慢指標思路很特別,遇到相同的值快指標就往後平移,遇到不同的值就把慢指標往後平移並且把快指標的值賦給慢指標,最後從下標0到下標slow的範圍即為最後結果。

class

solution

(object):

defremoveduplicates

(self, nums)

:"""

:type nums: list[int]

:rtype: int

"""ifnot nums:

#判斷是否為空

return

0 fast, slow =0,

0#初始化快慢指標,從第乙個開始

while fast <

len(nums)

:#遍歷整個陣列

if nums[fast]

== nums[slow]

:#兩個值相同則只後移快指標

fast +=

1else

:#兩個值不同則後移慢指標並將慢指標下一位改為快指標當前值

slow +=

1 nums[slow]

= nums[fast]

for i in

range

(len

(nums)):

#遍歷陣列並輸出

print

(nums[i]

)return slow+

1a = solution(

)nums =[1

,1,2

,3,3

,4,5

,5,7

,8,8

,9]a.removeduplicates(nums)

思路很重要,快慢指標的思路值得學

leetcode解題之排序陣列

給你乙個整數陣列 nums,請你將該陣列公升序排列。示例 1 輸入 nums 5 2,3 1 輸出 1,2,3,5 示例 2 輸入 nums 5 1,1 2,0 0 輸出 0,0,1,1,2,5 1 nums.length 50000 50000 nums i 50000 主要考察的是排序演算法的基...

26 刪除排序陣列中的重複項 python

題目 給定乙個排序陣列,原地刪除重複出現的元素,返回移除後陣列的新長度 法 快慢指標,快指標遍歷陣列,然後比較nums fast 與nums slow 1 如果不同的話,把nums slow 1 nums fast 然後快慢指標同時後移乙個 2 相同的話,證明是重複出現的元素,只後移fast def...

Python實現刪除排序陣列中的重複項

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用o 1 額外空間的條件下完成。給定陣列 nums 1,1,2 函式應該返回新的長度 2,並且原陣列 nums 的前兩個元素被修改為 1,2。你不需...