摘要:好久不見最近都在忙年底的年會,還沉迷于學習統計學,教程還停留在基礎語法。做題做題無論如何,數據結構還是很重要的,所以準備每天刷的題目啦。第一題移除元素給定一個數組和一個值,你需要原地移除所有數值等于的元素,返回移除后數組的新長度。
好久不見
最近都在忙年底的年會,還沉迷于學習統計學,python教程還停留在基礎語法。
但是仔細規劃了下,還是要好好的瞄準目標前行。
所以準備呢,實戰走起來。
無論如何,數據結構還是很重要的,所以準備每天刷leetcode的題目啦。
慢慢的恢復數據結構知識,也實際的寫一寫python。
27.移除元素
給定一個數組 nums 和一個值 val,你需要原地移除所有數值等于 val 的元素,返回移除后數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。
元素的順序可以改變。你不需要考慮數組中超出新長度后面的元素。
class Solution: def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ for i in nums: if i == val: nums.remove(i) print(len(nums)) #這是第一版本的解法
但是測試出錯了
末尾的2沒有消除,數組中間的2是消除了的。為什么最后一個2會被錯過呢。
不死心的又測試了下,果然是最后一個值會被錯過。
class Solution: def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ length = len(nums) for i in range(length) if nums[i] == val: nums.remove(i) print(len(nums)) #隨手改了改
這個版本也是通過for in 循環,根據下標進行查找,但是有個弊端,可能會越界。因為數組移除之后會變短,但是length沒有更改。
所以還是原來的根據nums直接for in更便捷,所以我們來找找為什么最后一個數值會被跳過吧~
搜索了下發現有答案python:在for遍歷list時使用remove出現的問題以及解析
因為remove刪除元素后,指針數組所有數字前移,但是指針正常后移,所以,當到達最后一個數值的時候,指針早就不指向它了。
既然知道了原因,我們來想想怎么解決這個問題吧!發現了個解決方案慎用python的pop和remove方法
看來要慎用remove呢
新方法來啦~
class Solution: def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ for i in nums[:]: if i == val: nums.remove(i) print(len(nums))
這是因為x[:]與x不是同一個list,相當與把x的內存拷貝到一塊新的內存,當對x做remove操作的時候,新的內存list并沒有受影響。
然后成功提交啦,這是一個新的開始~開心
用4行解決了一道題~python你真棒!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43113.html
摘要:寫在前面的話好幾天木有刷題啦,今天猛刷了一把,要梳理一個順序好好的學習啦一定要好好執行每天做題的計劃最近真的好忙碌啊,還要做視頻。第二題最大子序和難度簡單給定一個整數數組,找到一個具有最大和的連續子數組子數組最少包含一個元素,返回其最大和。 寫在前面的話 好幾天木有刷題啦,今天猛刷了一把,要梳理一個順序好好的學習啦~一定要好好執行每天做題的計劃!最近真的好忙碌啊,還要做視頻。不過呢,看...
摘要:給定的字符串只含有小寫英文字母,并且長度不超過。其他這題了,要重做看了其他的人的題解,使用的是無限逼近中位值的辦法,理論基礎應該是泰勒公式。萬萬沒想到居然用到了泰勒公式手工執行了下算法,反而理解的更快,但是泰勒公式還得再復習下。 寫在前面的話 今天持續做題ing,python有意思~今天的題有點虐心...興許是我太笨了...會努力學習的!動態規劃我來啦~ 開始做題 第一題 459. 重...
摘要:第二題漢明距離難度簡單兩個整數之間的漢明距離指的是這兩個數字對應二進制位不同的位置的數目。給出兩個整數和,計算它們之間的漢明距離。第三題買賣股票的最佳時機難度簡單給定一個數組,它的第個元素是一支給定股票第天的價格。 寫在前面 這幾天斷斷續續做了題目,也在慢慢體會一些數據思維。終于不用邊做視頻邊寫題目啦~開心~把這幾天的題解發一下~ 認真做題的分割線 第一題 977. 有序數組的平方難度...
摘要:第五題對稱二叉樹難度簡單給定一個二叉樹,檢查它是否是鏡像對稱的。第十六題最大連續的個數難度簡單給定一個二進制數組,計算其中最大連續的個數。第十八題平方數之和難度簡單給定一個非負整數,你要判斷是否存在兩個整數和,使得。 寫在前面 最近忙著調教新裝備,沒有及時的寫題解,但是沒有在偷懶沒刷題喔~來認真整理下最近做的題目~ 之前考慮按tag來刷題,后來收到了推薦的leetcode題解,就根據上...
摘要:寫在前面今天沒有叨逼叨但是又一次錯過了競賽愛睡覺的小李下周要上班,下下周一定要參加了握拳認真做題的分割線第一題兩地調度公司計劃面試人。第人飛往市的費用為,飛往市的費用為。示例輸入輸出解釋第一個人去市,費用為。 寫在前面 今天沒有叨逼叨...但是又一次錯過了競賽...愛睡覺的小李...下周要上班,下下周一定要參加了(握拳 認真做題的分割線 第一題 1029. 兩地調度公司計劃面試2N人。...
閱讀 3564·2023-04-26 00:05
閱讀 954·2021-11-11 16:55
閱讀 3522·2021-09-26 09:46
閱讀 3517·2019-08-30 15:56
閱讀 909·2019-08-30 15:55
閱讀 2934·2019-08-30 15:53
閱讀 1940·2019-08-29 17:11
閱讀 814·2019-08-29 16:52