algorithm做演算法題,review點評英文文章,tip總結技術技巧,share做技術分享。每週打卡一次,這就是arts打卡。
leetcode 劍指 offer 59 - ii. 佇列的最大值
題目描述:
請定義乙個佇列並實現函式max_value
得到佇列裡的最大值,要求函式max_value
、push_back
和pop_front
的均攤時間複雜度都是o(1)。若隊列為空,pop_front
和max_value
需要返回 -1
示例 1:
輸入:
["maxqueue","push_back","push_back","max_value","pop_front","max_value"]
[,[1],[2],,,]
輸出: [null,null,null,2,1,2]
示例 2:
輸入:
["maxqueue","pop_front","max_value"]
[,,]
輸出: [null,-1,-1]
限制:
解題思路:
佇列和棧一樣是操作受限的線性表,不同的是,佇列是先進先出。題目中要求是找出最大值,在入隊時比較新加入元素是否大於最大值,如果更大,則更新最大值。在出隊時判斷是否為最大值出隊,如果是則重新計算最大值。
解題**:
class
maxqueue
:def
__init__
(self)
: self.queue =
self.max_num =-1
defmax_value
(self)
->
int:
iflen
(self.queue)==0
:return-1
return self.max_num
defpush_back
(self, value:
int)
->
none
:if value > self.max_num:
self.max_num = value
defpop_front
(self)
->
int:
iflen
(self.queue)==0
:return-1
iflen
(self.queue)==1
: self.max_num =-1
if self.queue[0]
== self.max_num and
len(self.queue)
>1:
self.max_num =
max(self.queue[1:
])pop_num = self.queue[0]
self.queue = self.queue[1:
]return pop_num
# your maxqueue object will be instantiated and called as such:
# obj = maxqueue()
# param_1 = obj.max_value()
# obj.push_back(value)
# param_3 = obj.pop_front()
magi是乙個反饋機器學習結果的搜尋引擎。magi會向其他搜尋引擎一樣爬取網頁資訊,不一樣的地方是,magi將蒐集到的資料進行結構化,提取其中資訊,形成供人參考的知識。magi比較適合在了解乙個新概念時使用。
在windows中執行curl命令,有時會報錯,不能直接搬移linux下的命令。建議使用invoke-webrequest
命令替代,參考這裡。
(23)python集合的使用
集合是無序可變,元素不能重複。實際上,集合底層是字典實現,集合的所有元素都是字典中的 鍵物件 因此是不能重複的且唯一的。1.使用 建立集合物件,並使用 add 方法新增元素 a a a.add 9 a 2.使用 set 將列表 元組等可迭代物件轉成集合。如果原來資料存在重複資料,則只保留乙個。a a...
2 3 Python資料型別
數值分成三種 整數 浮點數 複數 1 整數 在python中整數都是int型別,無大小限制,可任意大小 如果數字長度過大可以使用下劃線作為分隔符 如 a 123 456 345 a的值為123456345 十進位制的數字不能以0開頭 其他進製的整數,只要是數字列印時一定是以十進位制的形式顯示 二進位...
23 Python常用模組(一)
1.簡單了解模組 寫的每乙個py檔案都是乙個模組.還有一些我們一直在使用的模組 buildins 內建模組.print,input random 主要是和隨機相關的內容 random 隨機小數 uninform a,b 隨機小數 randint a,b 隨機整數 choice 隨機選擇乙個 samp...