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