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