摘要:叨逼叨默認(rèn)每天都要刷兩道題。今天目標(biāo)已完成。經(jīng)過昨天的那題數(shù)組題,我換了一種方式。之前我采用的是下標(biāo)來定位,用來刪除重復(fù)項。這次采用了數(shù)組內(nèi)的每一項來多帶帶做對比,用來進行刪除操作。這個判定很重要其中的是后面進行修改的,是必須的判定。
叨逼叨
默認(rèn)每天都要刷兩道題。
今天目標(biāo)已完成。
26. 刪除排序數(shù)組中的重復(fù)項
難度:簡單
類型:數(shù)組
給定一個排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個元素只出現(xiàn)一次,返回移除后數(shù)組的新長度。
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。
這題其實我之前做過,但是一直提交失敗。
經(jīng)過昨天的那題數(shù)組題,我換了一種for in方式。
之前我采用的是下標(biāo)來定位,用pop來刪除重復(fù)項。
這次采用了數(shù)組內(nèi)的每一項來多帶帶做對比,用remove來進行刪除操作。
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ length = len(nums) if length > 1: 這個判定很重要 point = nums[0] for i in nums[1:]: if point != i: point = i else: nums.remove(i) print(len(nums))
其中的if length > 1是后面進行修改的,是必須的判定。
因為可能存在空數(shù)組的情況,那么length = 0,不需要刪除任何項目。
而當(dāng)只有一個數(shù)組的時候,length = 1,同樣不需要刪除任何項目。
看了下用時,800ms屬于中間位置。
看了下44ms的范例,采用的是下標(biāo)標(biāo)記,用了反向的思路。
因為是有序數(shù)組,采用了快慢兩種指針,當(dāng)存在不一致的時候,可以進行覆蓋,達到刪除的目的。
第二題80. 刪除排序數(shù)組中的重復(fù)項 II
難度:中等
類型:數(shù)組
給定一個排序數(shù)組,你需要在原地刪除重復(fù)出現(xiàn)的元素,使得每個元素最多出現(xiàn)兩次,返回移除后數(shù)組的新長度。
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。
和第一題十分相似,但是多了條件,就是數(shù)值可以出現(xiàn)兩次,這就需要額外的進行計數(shù)。
class Solution: def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums) < 1: return 0 point = nums[0] count = 0 for i in nums[1:]: if point != i: point = i count = 0 else: count = count + 1 if count == 2: nums.remove(i) count = 1 return len(nums)
我的思路都是比較粗暴的辦法,就是用變量記錄當(dāng)前的對比值,當(dāng)對比值出現(xiàn)超出2次時候,就進行remove,和第一題比較接近的思路,方法也大致相同。
這題的用時會更少一點,但是也是中間位置。
這兩天做的題目都比較相似,而且難度較低,都是數(shù)組的題目。
套路比較相似,對python3的刪除操作和遍歷也有了更深的認(rèn)識與實踐。
后續(xù)要開始做更多其他數(shù)據(jù)結(jié)構(gòu)的題目,不斷嘗試。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/43104.html
摘要:刷題第三天正式刷題第三天。注意空字符串可被認(rèn)為是有效字符串。錯誤的一次是因為沒有考慮空字符串,當(dāng)存在為的時候,結(jié)果應(yīng)該為。第二題加一難度簡單類型給定一個由整數(shù)組成的非空數(shù)組所表示的非負(fù)整數(shù),在該數(shù)的基礎(chǔ)上加一。 刷題第三天 正式刷題第三天。之前看了個說法,挺認(rèn)可的。就是不要太在意一天的能呈現(xiàn)的價值,但是要在意累計的價值。之前很多時候我會對今天一天沒有完成的計劃而沮喪,事實上,算法的實踐...
摘要:寫在前面的話好幾天木有刷題啦,今天猛刷了一把,要梳理一個順序好好的學(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. 重...
摘要:寫在前面今天的小李的目標(biāo)是排序算法,果然還是要下手寫才會更有體會,也更記得住。排序算法冒泡排序主要是比對相鄰兩個數(shù)之間的大小關(guān)系,不斷將較大值交換至最后。 寫在前面 今天的小李的目標(biāo)是排序算法,果然還是要下手寫才會更有體會,也更記得住。 認(rèn)真做題的分割線 第一題 215. 數(shù)組中的第K個最大元素難度:中等在未排序的數(shù)組中找到第k個最大的元素。請注意,你需要找的是數(shù)組排序后的第k個最大的...
摘要:第二題羅馬數(shù)字轉(zhuǎn)整數(shù)難度簡單羅馬數(shù)字包含以下七種字符,,,,,和。字符數(shù)值例如,羅馬數(shù)字寫做,即為兩個并列的。通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。給定一個羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。 隨便說點啥 TIME:2019-02-01昨晚其實刷了題來著,但是沒有解出來,哭泣!但是,今天重新寫了下,解出來咯~所以今天的題量要增加咯~我會加油的! 第一題 14. 最長公共前綴難度:簡單 ...
閱讀 2710·2021-11-15 11:38
閱讀 2755·2021-11-04 16:13
閱讀 18467·2021-09-22 15:07
閱讀 1141·2019-08-30 15:55
閱讀 3351·2019-08-30 14:15
閱讀 1763·2019-08-29 13:59
閱讀 3309·2019-08-28 18:28
閱讀 1689·2019-08-23 18:29