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