leetcode每日一練 從排序陣列中刪除重複項

2021-08-19 15:43:57 字數 1213 閱讀 8269

從今天開始,就開始我的leetcode刷題之旅,希望可以通過這樣的訓練,使得自己的演算法水平提公升

question:(從排序陣列中刪除重複項)

給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o(1) 額外空間的條件下完成。

example:

給定陣列 nums = [1,1,2], 

函式應該返回新的長度 2, 並且原陣列 nums 的前兩個元素被修改為 1, 2。

你不需要考慮陣列中超出新長度後面的元素。

1. 思考

拿到這個問題時,我想了一下,咦,這題沒啥難度呀,無非就是每個元素和後面的元素進行判斷,如果相等的話,就刪掉這個元素,於是我就開始寫**,我的**如下

class solution:

def removeduplicates(self, nums):

""":type nums: list[int]

:rtype: int

"""for i in range(len(nums)-1):

if nums[i]==nums[i+1]:

nums.remove(nums[i])

return len(nums)

恩打眼一看,**的確是和我想的一樣,可是當我run這個**時,出現了索引超出list的錯誤,我就在想,**出現了問題

2.問題總結

原來問題出現在,我在remove乙個元素的時候,list長度已經發生了變化,而我們range所產生的的遍歷數是之前生成,所以後面進行相等判斷時,就會超出索引

那麼知道問題的由來,怎麼解決問題呢,就不要使用for語句,換成while語句

3.**

改換以後的**如下:

class solution:

def removeduplicates(self, nums):

""":type nums: list[int]

:rtype: int

"""i=0

while i再次執行,**成功執行!

Leetcode 每日一練

最小棧 設計乙個支援 push pop top 操作,並能在常數時間內檢索到最小元素的棧。push x 將元素 x 推入棧中。pop 刪除棧頂的元素。top 獲取棧頂元素。getmin 檢索棧中的最小元素。示例 輸入 minstack push push push getmin pop top ge...

Leetcode 每日一練

leetcode 每日一練 擁有最多糖果的孩子 給你乙個陣列 candies 和乙個整數 extracandies 其中 candies i 代表第 i 個孩子擁有的糖果數目。對每乙個孩子,檢查是否存在一種方案,將額外的 extracandies 個糖果分配給孩子們之後,此孩子有 最多 的糖果。注意...

Leetcode 每日一練

猜數字 小a 和 小b 在玩猜數字。小b 每次從 1,2,3 中隨機選擇乙個,小a 每次也從 1,2,3 中選擇乙個猜。他們一共進行三次這個遊戲,請返回 小a 猜對了幾次?輸入的guess陣列為 小a 每次的猜測,answer陣列為 小b 每次的選擇。guess和answer的長度都等於3。示例 1...