Pythonの list
は可変線形リストです。
len()はO(1)操作です
要素のアクセスと割り当て、テール結合とテール削除(テールスライス削除を含む)はすべてO(1)操作です。
一般的な場所要素の追加、スライスの置換、スライスの削除、およびテーブルのスプライシング(拡張)はすべてO(n)操作です。
pop操作は、デフォルトでテーブルの終了要素を削除してO(1)に戻し、非テール位置をO(n)時間の複雑さとして指定します。
lst.clear()
テーブルlst O(1)操作のすべての要素をクリアします。達成する2つの方法:
a。要素カウント値(テーブル長)が0に設定されます。実装は簡単で運用効率は高いですが、占有ストレージを真に解放することはできません。テーブルが非常に長い場合、操作の実行後にテーブルに要素はありませんが、元の大きなメモリブロックは引き続き占有されます。
b。空のテーブル用に別のストレージ領域が割り当てられ、元のストレージ領域は直接破棄されます。テーブルが再び大きくなると、ストレージ領域は頻繁に交換されます。
lst.reverse()
テーブルlst自体を変更すると、要素の順序が逆になりますO(n)
def reverse(self):
elems = self.elements
i, j =0,len(elems)-1while i < j:
elems[i], elems[j]= elems[j], elems[i]
i, j = i+1, j-1
sort
sort、最良のソートアルゴリズムの平均および最悪の場合の時間の複雑さはO(nlogn)です
## リンクテーブル
### 状態
1. テーブルの最初の要素が見つかります。
2. 任意の要素から始めて、次の要素を見つけることができます。
### 単一のリスト
- 定義
``` python
classLNode:
def __init__(self, elem, next_= None):
self.elem = elem
self.next = next_
スタックは、スタックとも呼ばれ、操作が制限された線形テーブルです。制限は、テーブルの一方の端でのみ挿入および削除操作が許可されることです。
挿入および削除操作を許可するセクションは、スタックの最上位(top)と呼ばれます。,もう一方の端はスタックの最下部(bottom)と呼ばれます
スタックの下部は固定されており、スタックの上部はフローティングです。
スタック内の要素の数がゼロの場合、それは呼び出されます空のスタック。挿入は一般的に呼ばれますスタックにプッシュ(PUSH)、削除が呼び出されますアンスタック(POP)。
ラストインファーストアウト(LIFO、ラストインファーストアウト),ラストイン、ファーストアウトテーブル。
スタッキングとアンスタッキングの時間の複雑さは両方ともO(1)です
classStack(Object):
def __init __(self、limit = 10): "" "空のスタックを作成します
"""
self.stack = []#要素を保存する
self.limit = limit#スタック容量制限
def push(self、data): "" "は、要素データをスタックに追加します。これは、pushまたはpushとも呼ばれます。
"""
# スタックがオーバーフローするかどうかを判断します
iflen(self.stack)>= self.limit:
インデックスエラーを発生させます( 'スタックの最大容量を超えています!')
self.stack.append(data)
def pop(self): "" "は、スタックにプッシュされた最後の要素を削除して返します。これは、多くの場合、ポップと呼ばれます。
"""
if self.stack:return self.stack.pop()else:
rasie IndexError('pop from an empty stack')
def top(self): "" "スタックにプッシュされた最後の(トップ)要素を削除せずに取得します。
"""
if self.stack:return self.stack[-1]
def is_empty(self): "" "スタックが空かどうかを判断し、空の場合はTrueを返し、そうでない場合はFalseを返します。
"""
return not bool(self.stack)
def size(self): "" "スタック内の要素の数を取得します
"""
returnlen(self.stack)
"""
スタックを使用して、ブラケットストリングのバランスが取れているかどうかを確認します
有効なブラケット文字列は、次の条件を満たす必要があります。
オープニングブラケットは、同じタイプのクロージングブラケットで閉じる必要があります。
開始括弧は正しい順序で閉じる必要があります。
空の文字列は有効な文字列と見なすことができることに注意してください。
例:((())):True((()):False(())):False
"""
import stack
st = stack.Stack()
input_str ="(()"for s in input_str:if st.top()== s:
st.pop()else:
st.push(s)
result = True if st.is_empty()else False
print(result)
Recommended Posts