題目中要求的是原地修改陣列,一開始我的想法是碰到相同的後面就往前平移,這樣工作量也比較大,而且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。你不需...