2.letecode2 堆疊和數列(stack and queue)
2.1概念
2.1.1.棧都是一種資料項按序排列的資料結構,只能在一端(稱為棧頂(top))對資料項進行插入和刪除。棧,先進後出。
2.1.2佇列是一種特殊的線性表,只允許在表的頭部(front處)進行刪除操作,在表的尾部(rear處)進行插入操作的線性資料結構,這種結構就叫做佇列。
進行插入操作的一端稱為隊尾,進行刪除操作的一端稱為隊尾。佇列,先進先出。
題型一:(letecode155)設計乙個支援 push,pop,top 操作,並能在常數時間內檢索到最小元素的棧,要求時間複雜度為o(1)
push(x) – 將元素 x 推入棧中。
pop() – 刪除棧頂的元素。
top() – 獲取棧頂元素。
getmin() – 檢索棧中的最小元素。
思路:使用兩個棧,stack,min_list,先將第乙個元素入棧stack和min_stack,接著將stack入棧的元素和min_stack棧頂比較,假如入棧元素小於等於棧頂元素,則把該元素對min_stack也入棧;
否則進行下乙個元素的入棧,依次進行;出棧時,把stack出棧的元素和min_stack棧頂比較,相等就是最小值;同時stack,min_stack出棧,否則stack單獨出棧。
class
minstack
(object):
def__init__
(self)
: self.stack =
self.min_list =
defpush
(self, x):if
not self.min_list:
###最小棧如果是空的,新增
elif x <= self.min_list[-1
]:##假如x小於等於最小棧棧頂元素,將元素入最小棧
defpop
(self)
: n = self.stack.pop(
)if n == self.min_list[-1
]:###出棧的元素等於最小棧棧頂元素的時候出棧
self.min_list.pop(
)def
top(self):if
not self.stack:
##棧空返回none
return
none
return self.stack[-1
]def
getmin
(self):if
not self.min_list:
##如何棧空返回none
return
none
return self.min_list[-1
]
用時72ms,擊敗了63.2
%題型一(letecode20):判斷括號字串是否匹配(時間複雜度和空間複雜度都是o(n))
演算法思想:設定乙個棧,當讀到左括號時,左括號進棧。當讀到右括號時,則從棧中彈出乙個元素,與讀到的左括號進行匹配,若匹配成功,繼續讀入;否則
匹配失敗,返回flase。另外,在演算法的開始和結束時,棧都應該是空的.所以匹配到最後還要判斷棧是否為空,若非空,則說明匹配失敗.
技巧:使用了乙個字典map把左右括號的對應關係儲存起來,並把所有的右括號都放在鍵的位置。
如果c不是右括號(即為左括號或者其他),就把c放在stack裡面,否則的話就和棧頂的元素進行對比,看左右括號是否匹配,如果不匹配,return
false。
如果匹配,最後要判斷棧是否為空。
```python
class
solution
(object):
defisvalid
(self,s)
: a =':
' l =
[none
]##不能去掉none,去掉就出錯
for i in s:
if i in a and a[i]
== l[-1
]:l.pop(
)else
:return
len(l)
==1
用時20ms,戰勝了94.52% 資料分析高階 DCIC競賽 task0準備工作
學習資源 學習手冊 賽事詳情 共有三個部分的競賽 1 端午假期a城市交通網路擁堵識別及緩堵策略研究 需要具有從經緯度對映到路段的能力 2 a城市巡遊車與網約車與運營特徵對比分析 主要是對計程車和網約車的分布之類的對比,相對於第乙個賽題難度稍小 3 創意題 城市巡遊車與網約車運營特徵對比分析 賽題說明...
0基礎資料探勘筆記task2
第一次接觸eda 1.首先用pandas載入資料。用head shape,columns,describe 等對資料的大概情況了解一下。矩陣的行列,均值,中位數,每個變數的大概分布等 2.用info value counts 去了解那些資料是有異常的,然後替換或刪除,或者 填充 nan值情況,值的分...
Glance的Image和Task介紹
一 image image是glance的主要資源。類似於vmware的vm模板,它預先安裝了os。如果從image啟動vm,該vm被刪除後,image依然存在,但是image上不包含本次在該vm例項上的修改,因為image只是給vm啟動的模板。相對於整個openstack,nova是乙個虛擬機器的...