小李飞刀:用python刷题ing....
叨逼叨
默認(rèn)每天都要刷兩道題。
今天目標(biāo)已完成。
第一題
26. 刪除排序數(shù)組中的重復(fù)項(xiàng)
難度:簡(jiǎn)單
類型:數(shù)組
不要使用額外的數(shù)組空間,你必須在原地修改輸入數(shù)組并在使用 O(1) 額外空間的條件下完成。
這題其實(shí)我之前做過,但是一直提交失敗。
經(jīng)過昨天的那題數(shù)組題,我換了一種for in方式。
之前我采用的是下標(biāo)來定位,用pop來刪除重復(fù)項(xiàng)。
這次采用了數(shù)組內(nèi)的每一項(xiàng)來單獨(dú)做對(duì)比,用remove來進(jìn)行刪除操作。
其中的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ù)組
不要使用額外的數(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 0point = nums[0]count = 0 for i in nums[1:]:if point != i:point = icount = 0else:count = count + 1if count == 2:nums.remove(i)count = 1return len(nums)我的思路都是比較粗暴的辦法,就是用變量記錄當(dāng)前的對(duì)比值,當(dāng)對(duì)比值出現(xiàn)超出2次時(shí)候,就進(jìn)行remove,和第一題比較接近的思路,方法也大致相同。
這題的用時(shí)會(huì)更少一點(diǎn),但是也是中間位置。
總結(jié)
這兩天做的題目都比較相似,而且難度較低,都是數(shù)組的題目。
套路比較相似,對(duì)python3的刪除操作和遍歷也有了更深的認(rèn)識(shí)與實(shí)踐。
后續(xù)要開始做更多其他數(shù)據(jù)結(jié)構(gòu)的題目,不斷嘗試。
總結(jié)
以上是生活随笔為你收集整理的小李飞刀:用python刷题ing....的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java1.8.0_java jdk官方
- 下一篇: python dataframe gro