從今天開始,就開始我的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...