理解の1つのスタック
スタックは、データの集まりである、リストが理解されよう挿入または削除操作の一端のみ。
スタック機能:LIFOを
スタックの基本的な操作
-
- プッシュ:プッシュ
- ポップ:ポップ
- スタックを取る:gettopを
def brace_match(s): stack = [] d = {"(":")", "[":"]", "{":"}"} for ch in s: if ch in {'(','[','{'}: stack.append(ch) elif len(stack) == 0: print('多了右括号%s' % ch) return False elif d[stack[-1]] == ch: stack.pop() else: print('括号%s处不匹配' % ch) return False if len(stack) == 0: return True else: print('剩余括号未匹配') return False
2高く評価キュー
キューの理解:
- 待ち行列(キュー)がもう一方の端を削除し、リストに挿入され一端のみを可能にするデータの集合です。
- 尾部の一端が挿入(リア)と呼ばれ、チームへの挿入操作又はチームと呼ばれます。
- 一端はアクションがチームから呼び出され、削除、チームのヘッドの削除(フロント)と呼ばれています。
- 自然キュー:(先入れ先出し)FIFO
- 双方向キュー:キュー両端の吸気およびデキューの操作を可能にします
キューは、内蔵モジュール:コレクションのインポート両端キューから
- キューの作成:キュー=両端キュー(LI)
- 追記:チームへ
- チーム:popleft
- チームへの最初の双方向キュー:appendleft
- チームへのキューの双方向エンド:ポップ
3再帰的フィボナッチ関数
# 递归:
def my_num(x):
if x == 1:
return 1
elif x == 2:
return 2
else:
return my_num(x-2) + my_num(x-1)
for i in range(1, 10):
print(my_num(i))
4車両スケジューリング問題
def VehicleReecorder(Trucks, k):
BufferRails = []
for i in range(k):
BufferRails.append([])
currentCarriage = 1
for i in Trucks:
if i == currentCarriage:
print(f'{i}')
currentCarriage += 1
continue
else:
for buffer in BufferRails:
if not buffer:
buffer.append(i)
break
else:
if min(buffer) > i:
buffer.append(i)
break
for buffer_list in BufferRails:
for i in range(len(buffer_list)):
last = buffer_list.pop()
if last == currentCarriage:
print(f'{i}')
currentCarriage +=1