mirror of
https://github.com/krahets/hello-algo.git
synced 2026-04-13 18:00:18 +08:00
Many bug fixes and improvements (#1270)
* Add Ruby and Kotlin icons Add the avatar of @curtishd * Update README * Synchronize zh-hant and zh versions. * Translate the pythontutor blocks to traditional Chinese * Fix en/mkdocs.yml * Update the landing page of the en version. * Fix the Dockerfile * Refine the en landingpage * Fix en landing page * Reset the README.md
This commit is contained in:
@@ -28,25 +28,25 @@
|
||||
|
||||
# 初始化雙向佇列
|
||||
deque: deque[int] = deque()
|
||||
|
||||
|
||||
# 元素入列
|
||||
deque.append(2) # 新增至佇列尾
|
||||
deque.append(5)
|
||||
deque.append(4)
|
||||
deque.appendleft(3) # 新增至佇列首
|
||||
deque.appendleft(1)
|
||||
|
||||
|
||||
# 訪問元素
|
||||
front: int = deque[0] # 佇列首元素
|
||||
rear: int = deque[-1] # 佇列尾元素
|
||||
|
||||
|
||||
# 元素出列
|
||||
pop_front: int = deque.popleft() # 佇列首元素出列
|
||||
pop_rear: int = deque.pop() # 佇列尾元素出列
|
||||
|
||||
|
||||
# 獲取雙向佇列的長度
|
||||
size: int = len(deque)
|
||||
|
||||
|
||||
# 判斷雙向佇列是否為空
|
||||
is_empty: bool = len(deque) == 0
|
||||
```
|
||||
@@ -56,25 +56,25 @@
|
||||
```cpp title="deque.cpp"
|
||||
/* 初始化雙向佇列 */
|
||||
deque<int> deque;
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
deque.push_back(2); // 新增至佇列尾
|
||||
deque.push_back(5);
|
||||
deque.push_back(4);
|
||||
deque.push_front(3); // 新增至佇列首
|
||||
deque.push_front(1);
|
||||
|
||||
|
||||
/* 訪問元素 */
|
||||
int front = deque.front(); // 佇列首元素
|
||||
int back = deque.back(); // 佇列尾元素
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
deque.pop_front(); // 佇列首元素出列
|
||||
deque.pop_back(); // 佇列尾元素出列
|
||||
|
||||
|
||||
/* 獲取雙向佇列的長度 */
|
||||
int size = deque.size();
|
||||
|
||||
|
||||
/* 判斷雙向佇列是否為空 */
|
||||
bool empty = deque.empty();
|
||||
```
|
||||
@@ -84,25 +84,25 @@
|
||||
```java title="deque.java"
|
||||
/* 初始化雙向佇列 */
|
||||
Deque<Integer> deque = new LinkedList<>();
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
deque.offerLast(2); // 新增至佇列尾
|
||||
deque.offerLast(5);
|
||||
deque.offerLast(4);
|
||||
deque.offerFirst(3); // 新增至佇列首
|
||||
deque.offerFirst(1);
|
||||
|
||||
|
||||
/* 訪問元素 */
|
||||
int peekFirst = deque.peekFirst(); // 佇列首元素
|
||||
int peekLast = deque.peekLast(); // 佇列尾元素
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
int popFirst = deque.pollFirst(); // 佇列首元素出列
|
||||
int popLast = deque.pollLast(); // 佇列尾元素出列
|
||||
|
||||
|
||||
/* 獲取雙向佇列的長度 */
|
||||
int size = deque.size();
|
||||
|
||||
|
||||
/* 判斷雙向佇列是否為空 */
|
||||
boolean isEmpty = deque.isEmpty();
|
||||
```
|
||||
@@ -113,25 +113,25 @@
|
||||
/* 初始化雙向佇列 */
|
||||
// 在 C# 中,將鏈結串列 LinkedList 看作雙向佇列來使用
|
||||
LinkedList<int> deque = new();
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
deque.AddLast(2); // 新增至佇列尾
|
||||
deque.AddLast(5);
|
||||
deque.AddLast(4);
|
||||
deque.AddFirst(3); // 新增至佇列首
|
||||
deque.AddFirst(1);
|
||||
|
||||
|
||||
/* 訪問元素 */
|
||||
int peekFirst = deque.First.Value; // 佇列首元素
|
||||
int peekLast = deque.Last.Value; // 佇列尾元素
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
deque.RemoveFirst(); // 佇列首元素出列
|
||||
deque.RemoveLast(); // 佇列尾元素出列
|
||||
|
||||
|
||||
/* 獲取雙向佇列的長度 */
|
||||
int size = deque.Count;
|
||||
|
||||
|
||||
/* 判斷雙向佇列是否為空 */
|
||||
bool isEmpty = deque.Count == 0;
|
||||
```
|
||||
@@ -142,25 +142,25 @@
|
||||
/* 初始化雙向佇列 */
|
||||
// 在 Go 中,將 list 作為雙向佇列使用
|
||||
deque := list.New()
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
deque.PushBack(2) // 新增至佇列尾
|
||||
deque.PushBack(5)
|
||||
deque.PushBack(4)
|
||||
deque.PushFront(3) // 新增至佇列首
|
||||
deque.PushFront(1)
|
||||
|
||||
|
||||
/* 訪問元素 */
|
||||
front := deque.Front() // 佇列首元素
|
||||
rear := deque.Back() // 佇列尾元素
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
deque.Remove(front) // 佇列首元素出列
|
||||
deque.Remove(rear) // 佇列尾元素出列
|
||||
|
||||
|
||||
/* 獲取雙向佇列的長度 */
|
||||
size := deque.Len()
|
||||
|
||||
|
||||
/* 判斷雙向佇列是否為空 */
|
||||
isEmpty := deque.Len() == 0
|
||||
```
|
||||
@@ -329,25 +329,25 @@
|
||||
```kotlin title="deque.kt"
|
||||
/* 初始化雙向佇列 */
|
||||
val deque = LinkedList<Int>()
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
deque.offerLast(2) // 新增至佇列尾
|
||||
deque.offerLast(5)
|
||||
deque.offerLast(4)
|
||||
deque.offerFirst(3) // 新增至佇列首
|
||||
deque.offerFirst(1)
|
||||
|
||||
|
||||
/* 訪問元素 */
|
||||
val peekFirst = deque.peekFirst() // 佇列首元素
|
||||
val peekLast = deque.peekLast() // 佇列尾元素
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
val popFirst = deque.pollFirst() // 佇列首元素出列
|
||||
val popLast = deque.pollLast() // 佇列尾元素出列
|
||||
|
||||
|
||||
/* 獲取雙向佇列的長度 */
|
||||
val size = deque.size
|
||||
|
||||
|
||||
/* 判斷雙向佇列是否為空 */
|
||||
val isEmpty = deque.isEmpty()
|
||||
```
|
||||
@@ -355,7 +355,32 @@
|
||||
=== "Ruby"
|
||||
|
||||
```ruby title="deque.rb"
|
||||
# 初始化雙向佇列
|
||||
# Ruby 沒有內直的雙端佇列,只能把 Array 當作雙端佇列來使用
|
||||
deque = []
|
||||
|
||||
# 元素如隊
|
||||
deque << 2
|
||||
deque << 5
|
||||
deque << 4
|
||||
# 請注意,由於是陣列,Array#unshift 方法的時間複雜度為 O(n)
|
||||
deque.unshift(3)
|
||||
deque.unshift(1)
|
||||
|
||||
# 訪問元素
|
||||
peek_first = deque.first
|
||||
peek_last = deque.last
|
||||
|
||||
# 元素出列
|
||||
# 請注意,由於是陣列, Array#shift 方法的時間複雜度為 O(n)
|
||||
pop_front = deque.shift
|
||||
pop_back = deque.pop
|
||||
|
||||
# 獲取雙向佇列的長度
|
||||
size = deque.length
|
||||
|
||||
# 判斷雙向佇列是否為空
|
||||
is_empty = size.zero?
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
@@ -366,7 +391,7 @@
|
||||
|
||||
??? pythontutor "視覺化執行"
|
||||
|
||||
https://pythontutor.com/render.html#code=from%20collections%20import%20deque%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%0A%20%20%20%20deq%20%3D%20deque%28%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E9%98%9F%0A%20%20%20%20deq.append%282%29%20%20%23%20%E6%B7%BB%E5%8A%A0%E8%87%B3%E9%98%9F%E5%B0%BE%0A%20%20%20%20deq.append%285%29%0A%20%20%20%20deq.append%284%29%0A%20%20%20%20deq.appendleft%283%29%20%20%23%20%E6%B7%BB%E5%8A%A0%E8%87%B3%E9%98%9F%E9%A6%96%0A%20%20%20%20deq.appendleft%281%29%0A%20%20%20%20print%28%22%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%20deque%20%3D%22,%20deq%29%0A%0A%20%20%20%20%23%20%E8%AE%BF%E9%97%AE%E5%85%83%E7%B4%A0%0A%20%20%20%20front%20%3D%20deq%5B0%5D%20%20%23%20%E9%98%9F%E9%A6%96%E5%85%83%E7%B4%A0%0A%20%20%20%20print%28%22%E9%98%9F%E9%A6%96%E5%85%83%E7%B4%A0%20front%20%3D%22,%20front%29%0A%20%20%20%20rear%20%3D%20deq%5B-1%5D%20%20%23%20%E9%98%9F%E5%B0%BE%E5%85%83%E7%B4%A0%0A%20%20%20%20print%28%22%E9%98%9F%E5%B0%BE%E5%85%83%E7%B4%A0%20rear%20%3D%22,%20rear%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E9%98%9F%0A%20%20%20%20pop_front%20%3D%20deq.popleft%28%29%20%20%23%20%E9%98%9F%E9%A6%96%E5%85%83%E7%B4%A0%E5%87%BA%E9%98%9F%0A%20%20%20%20print%28%22%E9%98%9F%E9%A6%96%E5%87%BA%E9%98%9F%E5%85%83%E7%B4%A0%20%20pop_front%20%3D%22,%20pop_front%29%0A%20%20%20%20print%28%22%E9%98%9F%E9%A6%96%E5%87%BA%E9%98%9F%E5%90%8E%20deque%20%3D%22,%20deq%29%0A%20%20%20%20pop_rear%20%3D%20deq.pop%28%29%20%20%23%20%E9%98%9F%E5%B0%BE%E5%85%83%E7%B4%A0%E5%87%BA%E9%98%9F%0A%20%20%20%20print%28%22%E9%98%9F%E5%B0%BE%E5%87%BA%E9%98%9F%E5%85%83%E7%B4%A0%20%20pop_rear%20%3D%22,%20pop_rear%29%0A%20%20%20%20print%28%22%E9%98%9F%E5%B0%BE%E5%87%BA%E9%98%9F%E5%90%8E%20deque%20%3D%22,%20deq%29%0A%0A%20%20%20%20%23%20%E8%8E%B7%E5%8F%96%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28deq%29%0A%20%20%20%20print%28%22%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%E9%95%BF%E5%BA%A6%20size%20%3D%22,%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%AD%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28deq%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%20%3D%22,%20is_empty%29&cumulative=false&curInstr=3&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
https://pythontutor.com/render.html#code=from%20collections%20import%20deque%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%0A%20%20%20%20deq%20%3D%20deque%28%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E5%88%97%0A%20%20%20%20deq.append%282%29%20%20%23%20%E6%96%B0%E5%A2%9E%E8%87%B3%E4%BD%87%E5%88%97%E5%B0%BE%0A%20%20%20%20deq.append%285%29%0A%20%20%20%20deq.append%284%29%0A%20%20%20%20deq.appendleft%283%29%20%20%23%20%E6%96%B0%E5%A2%9E%E8%87%B3%E4%BD%87%E5%88%97%E9%A6%96%0A%20%20%20%20deq.appendleft%281%29%0A%20%20%20%20print%28%22%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%20deque%20%3D%22%2C%20deq%29%0A%0A%20%20%20%20%23%20%E8%A8%AA%E5%95%8F%E5%85%83%E7%B4%A0%0A%20%20%20%20front%20%3D%20deq%5B0%5D%20%20%23%20%E4%BD%87%E5%88%97%E9%A6%96%E5%85%83%E7%B4%A0%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E9%A6%96%E5%85%83%E7%B4%A0%20front%20%3D%22%2C%20front%29%0A%20%20%20%20rear%20%3D%20deq%5B-1%5D%20%20%23%20%E4%BD%87%E5%88%97%E5%B0%BE%E5%85%83%E7%B4%A0%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E5%B0%BE%E5%85%83%E7%B4%A0%20rear%20%3D%22%2C%20rear%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E5%88%97%0A%20%20%20%20pop_front%20%3D%20deq.popleft%28%29%20%20%23%20%E4%BD%87%E5%88%97%E9%A6%96%E5%85%83%E7%B4%A0%E5%87%BA%E5%88%97%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E9%A6%96%E5%87%BA%E5%88%97%E5%85%83%E7%B4%A0%20%20pop_front%20%3D%22%2C%20pop_front%29%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E9%A6%96%E5%87%BA%E5%88%97%E5%BE%8C%20deque%20%3D%22%2C%20deq%29%0A%20%20%20%20pop_rear%20%3D%20deq.pop%28%29%20%20%23%20%E4%BD%87%E5%88%97%E5%B0%BE%E5%85%83%E7%B4%A0%E5%87%BA%E5%88%97%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E5%B0%BE%E5%87%BA%E5%88%97%E5%85%83%E7%B4%A0%20%20pop_rear%20%3D%22%2C%20pop_rear%29%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E5%B0%BE%E5%87%BA%E5%88%97%E5%BE%8C%20deque%20%3D%22%2C%20deq%29%0A%0A%20%20%20%20%23%20%E7%8D%B2%E5%8F%96%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%E7%9A%84%E9%95%B7%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28deq%29%0A%20%20%20%20print%28%22%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%E9%95%B7%E5%BA%A6%20size%20%3D%22%2C%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%B7%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28deq%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%20%3D%22%2C%20is_empty%29&cumulative=false&curInstr=3&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
|
||||
## 雙向佇列實現 *
|
||||
|
||||
|
||||
@@ -29,23 +29,23 @@
|
||||
# 在 Python 中,我們一般將雙向佇列類別 deque 當作佇列使用
|
||||
# 雖然 queue.Queue() 是純正的佇列類別,但不太好用,因此不推薦
|
||||
que: deque[int] = deque()
|
||||
|
||||
|
||||
# 元素入列
|
||||
que.append(1)
|
||||
que.append(3)
|
||||
que.append(2)
|
||||
que.append(5)
|
||||
que.append(4)
|
||||
|
||||
|
||||
# 訪問佇列首元素
|
||||
front: int = que[0]
|
||||
|
||||
|
||||
# 元素出列
|
||||
pop: int = que.popleft()
|
||||
|
||||
|
||||
# 獲取佇列的長度
|
||||
size: int = len(que)
|
||||
|
||||
|
||||
# 判斷佇列是否為空
|
||||
is_empty: bool = len(que) == 0
|
||||
```
|
||||
@@ -55,23 +55,23 @@
|
||||
```cpp title="queue.cpp"
|
||||
/* 初始化佇列 */
|
||||
queue<int> queue;
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.push(1);
|
||||
queue.push(3);
|
||||
queue.push(2);
|
||||
queue.push(5);
|
||||
queue.push(4);
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
int front = queue.front();
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
queue.pop();
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
int size = queue.size();
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
bool empty = queue.empty();
|
||||
```
|
||||
@@ -81,23 +81,23 @@
|
||||
```java title="queue.java"
|
||||
/* 初始化佇列 */
|
||||
Queue<Integer> queue = new LinkedList<>();
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.offer(1);
|
||||
queue.offer(3);
|
||||
queue.offer(2);
|
||||
queue.offer(5);
|
||||
queue.offer(4);
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
int peek = queue.peek();
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
int pop = queue.poll();
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
int size = queue.size();
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
boolean isEmpty = queue.isEmpty();
|
||||
```
|
||||
@@ -107,23 +107,23 @@
|
||||
```csharp title="queue.cs"
|
||||
/* 初始化佇列 */
|
||||
Queue<int> queue = new();
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.Enqueue(1);
|
||||
queue.Enqueue(3);
|
||||
queue.Enqueue(2);
|
||||
queue.Enqueue(5);
|
||||
queue.Enqueue(4);
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
int peek = queue.Peek();
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
int pop = queue.Dequeue();
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
int size = queue.Count;
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
bool isEmpty = queue.Count == 0;
|
||||
```
|
||||
@@ -134,24 +134,24 @@
|
||||
/* 初始化佇列 */
|
||||
// 在 Go 中,將 list 作為佇列來使用
|
||||
queue := list.New()
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.PushBack(1)
|
||||
queue.PushBack(3)
|
||||
queue.PushBack(2)
|
||||
queue.PushBack(5)
|
||||
queue.PushBack(4)
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
peek := queue.Front()
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
pop := queue.Front()
|
||||
queue.Remove(pop)
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
size := queue.Len()
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
isEmpty := queue.Len() == 0
|
||||
```
|
||||
@@ -162,24 +162,24 @@
|
||||
/* 初始化佇列 */
|
||||
// Swift 沒有內建的佇列類別,可以把 Array 當作佇列來使用
|
||||
var queue: [Int] = []
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.append(1)
|
||||
queue.append(3)
|
||||
queue.append(2)
|
||||
queue.append(5)
|
||||
queue.append(4)
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
let peek = queue.first!
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
// 由於是陣列,因此 removeFirst 的複雜度為 O(n)
|
||||
let pool = queue.removeFirst()
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
let size = queue.count
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
let isEmpty = queue.isEmpty
|
||||
```
|
||||
@@ -190,24 +190,24 @@
|
||||
/* 初始化佇列 */
|
||||
// JavaScript 沒有內建的佇列,可以把 Array 當作佇列來使用
|
||||
const queue = [];
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.push(1);
|
||||
queue.push(3);
|
||||
queue.push(2);
|
||||
queue.push(5);
|
||||
queue.push(4);
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
const peek = queue[0];
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
// 底層是陣列,因此 shift() 方法的時間複雜度為 O(n)
|
||||
const pop = queue.shift();
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
const size = queue.length;
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
const empty = queue.length === 0;
|
||||
```
|
||||
@@ -216,26 +216,26 @@
|
||||
|
||||
```typescript title="queue.ts"
|
||||
/* 初始化佇列 */
|
||||
// TypeScript 沒有內建的佇列,可以把 Array 當作佇列來使用
|
||||
// TypeScript 沒有內建的佇列,可以把 Array 當作佇列來使用
|
||||
const queue: number[] = [];
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.push(1);
|
||||
queue.push(3);
|
||||
queue.push(2);
|
||||
queue.push(5);
|
||||
queue.push(4);
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
const peek = queue[0];
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
// 底層是陣列,因此 shift() 方法的時間複雜度為 O(n)
|
||||
const pop = queue.shift();
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
const size = queue.length;
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
const empty = queue.length === 0;
|
||||
```
|
||||
@@ -307,23 +307,23 @@
|
||||
```kotlin title="queue.kt"
|
||||
/* 初始化佇列 */
|
||||
val queue = LinkedList<Int>()
|
||||
|
||||
|
||||
/* 元素入列 */
|
||||
queue.offer(1)
|
||||
queue.offer(3)
|
||||
queue.offer(2)
|
||||
queue.offer(5)
|
||||
queue.offer(4)
|
||||
|
||||
|
||||
/* 訪問佇列首元素 */
|
||||
val peek = queue.peek()
|
||||
|
||||
|
||||
/* 元素出列 */
|
||||
val pop = queue.poll()
|
||||
|
||||
|
||||
/* 獲取佇列的長度 */
|
||||
val size = queue.size
|
||||
|
||||
|
||||
/* 判斷佇列是否為空 */
|
||||
val isEmpty = queue.isEmpty()
|
||||
```
|
||||
@@ -331,7 +331,29 @@
|
||||
=== "Ruby"
|
||||
|
||||
```ruby title="queue.rb"
|
||||
# 初始化佇列
|
||||
# Ruby 內建的佇列(Thread::Queue) 沒有 peek 和走訪方法,可以把 Array 當作佇列來使用
|
||||
queue = []
|
||||
|
||||
# 元素入列
|
||||
queue.push(1)
|
||||
queue.push(3)
|
||||
queue.push(2)
|
||||
queue.push(5)
|
||||
queue.push(4)
|
||||
|
||||
# 訪問佇列元素
|
||||
peek = queue.first
|
||||
|
||||
# 元素出列
|
||||
# 清注意,由於是陣列,Array#shift 方法時間複雜度為 O(n)
|
||||
pop = queue.shift
|
||||
|
||||
# 獲取佇列的長度
|
||||
size = queue.length
|
||||
|
||||
# 判斷佇列是否為空
|
||||
is_empty = queue.empty?
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
@@ -342,7 +364,7 @@
|
||||
|
||||
??? pythontutor "視覺化執行"
|
||||
|
||||
https://pythontutor.com/render.html#code=from%20collections%20import%20deque%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E9%98%9F%E5%88%97%0A%20%20%20%20%23%20%E5%9C%A8%20Python%20%E4%B8%AD%EF%BC%8C%E6%88%91%E4%BB%AC%E4%B8%80%E8%88%AC%E5%B0%86%E5%8F%8C%E5%90%91%E9%98%9F%E5%88%97%E7%B1%BB%20deque%20%E7%9C%8B%E4%BD%9C%E9%98%9F%E5%88%97%E4%BD%BF%E7%94%A8%0A%20%20%20%20%23%20%E8%99%BD%E7%84%B6%20queue.Queue%28%29%20%E6%98%AF%E7%BA%AF%E6%AD%A3%E7%9A%84%E9%98%9F%E5%88%97%E7%B1%BB%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%A4%AA%E5%A5%BD%E7%94%A8%0A%20%20%20%20que%20%3D%20deque%28%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E9%98%9F%0A%20%20%20%20que.append%281%29%0A%20%20%20%20que.append%283%29%0A%20%20%20%20que.append%282%29%0A%20%20%20%20que.append%285%29%0A%20%20%20%20que.append%284%29%0A%20%20%20%20print%28%22%E9%98%9F%E5%88%97%20que%20%3D%22,%20que%29%0A%0A%20%20%20%20%23%20%E8%AE%BF%E9%97%AE%E9%98%9F%E9%A6%96%E5%85%83%E7%B4%A0%0A%20%20%20%20front%20%3D%20que%5B0%5D%0A%20%20%20%20print%28%22%E9%98%9F%E9%A6%96%E5%85%83%E7%B4%A0%20front%20%3D%22,%20front%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E9%98%9F%0A%20%20%20%20pop%20%3D%20que.popleft%28%29%0A%20%20%20%20print%28%22%E5%87%BA%E9%98%9F%E5%85%83%E7%B4%A0%20pop%20%3D%22,%20pop%29%0A%20%20%20%20print%28%22%E5%87%BA%E9%98%9F%E5%90%8E%20que%20%3D%22,%20que%29%0A%0A%20%20%20%20%23%20%E8%8E%B7%E5%8F%96%E9%98%9F%E5%88%97%E7%9A%84%E9%95%BF%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28que%29%0A%20%20%20%20print%28%22%E9%98%9F%E5%88%97%E9%95%BF%E5%BA%A6%20size%20%3D%22,%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%AD%E9%98%9F%E5%88%97%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28que%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E9%98%9F%E5%88%97%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%20%3D%22,%20is_empty%29&cumulative=false&curInstr=3&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
https://pythontutor.com/render.html#code=from%20collections%20import%20deque%0A%0A%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E4%BD%87%E5%88%97%0A%20%20%20%20%23%20%E5%9C%A8%20Python%20%E4%B8%AD%EF%BC%8C%E6%88%91%E5%80%91%E4%B8%80%E8%88%AC%E5%B0%87%E9%9B%99%E5%90%91%E4%BD%87%E5%88%97%E9%A1%9E%E5%88%A5%20deque%20%E7%9C%8B%E4%BD%9C%E4%BD%87%E5%88%97%E4%BD%BF%E7%94%A8%0A%20%20%20%20%23%20%E9%9B%96%E7%84%B6%20queue.Queue%28%29%20%E6%98%AF%E7%B4%94%E6%AD%A3%E7%9A%84%E4%BD%87%E5%88%97%E9%A1%9E%E5%88%A5%EF%BC%8C%E4%BD%86%E4%B8%8D%E5%A4%AA%E5%A5%BD%E7%94%A8%0A%20%20%20%20que%20%3D%20deque%28%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E5%88%97%0A%20%20%20%20que.append%281%29%0A%20%20%20%20que.append%283%29%0A%20%20%20%20que.append%282%29%0A%20%20%20%20que.append%285%29%0A%20%20%20%20que.append%284%29%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%20que%20%3D%22%2C%20que%29%0A%0A%20%20%20%20%23%20%E8%A8%AA%E5%95%8F%E4%BD%87%E5%88%97%E9%A6%96%E5%85%83%E7%B4%A0%0A%20%20%20%20front%20%3D%20que%5B0%5D%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E9%A6%96%E5%85%83%E7%B4%A0%20front%20%3D%22%2C%20front%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E5%88%97%0A%20%20%20%20pop%20%3D%20que.popleft%28%29%0A%20%20%20%20print%28%22%E5%87%BA%E5%88%97%E5%85%83%E7%B4%A0%20pop%20%3D%22%2C%20pop%29%0A%20%20%20%20print%28%22%E5%87%BA%E5%88%97%E5%BE%8C%20que%20%3D%22%2C%20que%29%0A%0A%20%20%20%20%23%20%E7%8D%B2%E5%8F%96%E4%BD%87%E5%88%97%E7%9A%84%E9%95%B7%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28que%29%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E9%95%B7%E5%BA%A6%20size%20%3D%22%2C%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%B7%E4%BD%87%E5%88%97%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28que%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E4%BD%87%E5%88%97%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%20%3D%22%2C%20is_empty%29&cumulative=false&curInstr=3&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
|
||||
## 佇列實現
|
||||
|
||||
|
||||
@@ -26,25 +26,25 @@
|
||||
|
||||
```python title="stack.py"
|
||||
# 初始化堆疊
|
||||
# Python 沒有內建的堆疊類別,可以把 list 當作堆疊來使用
|
||||
# Python 沒有內建的堆疊類別,可以把 list 當作堆疊來使用
|
||||
stack: list[int] = []
|
||||
|
||||
|
||||
# 元素入堆疊
|
||||
stack.append(1)
|
||||
stack.append(3)
|
||||
stack.append(2)
|
||||
stack.append(5)
|
||||
stack.append(4)
|
||||
|
||||
|
||||
# 訪問堆疊頂元素
|
||||
peek: int = stack[-1]
|
||||
|
||||
|
||||
# 元素出堆疊
|
||||
pop: int = stack.pop()
|
||||
|
||||
|
||||
# 獲取堆疊的長度
|
||||
size: int = len(stack)
|
||||
|
||||
|
||||
# 判斷是否為空
|
||||
is_empty: bool = len(stack) == 0
|
||||
```
|
||||
@@ -54,23 +54,23 @@
|
||||
```cpp title="stack.cpp"
|
||||
/* 初始化堆疊 */
|
||||
stack<int> stack;
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.push(1);
|
||||
stack.push(3);
|
||||
stack.push(2);
|
||||
stack.push(5);
|
||||
stack.push(4);
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
int top = stack.top();
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
stack.pop(); // 無返回值
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
int size = stack.size();
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
bool empty = stack.empty();
|
||||
```
|
||||
@@ -106,23 +106,23 @@
|
||||
```csharp title="stack.cs"
|
||||
/* 初始化堆疊 */
|
||||
Stack<int> stack = new();
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.Push(1);
|
||||
stack.Push(3);
|
||||
stack.Push(2);
|
||||
stack.Push(5);
|
||||
stack.Push(4);
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
int peek = stack.Peek();
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
int pop = stack.Pop();
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
int size = stack.Count;
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
bool isEmpty = stack.Count == 0;
|
||||
```
|
||||
@@ -133,24 +133,24 @@
|
||||
/* 初始化堆疊 */
|
||||
// 在 Go 中,推薦將 Slice 當作堆疊來使用
|
||||
var stack []int
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack = append(stack, 1)
|
||||
stack = append(stack, 3)
|
||||
stack = append(stack, 2)
|
||||
stack = append(stack, 5)
|
||||
stack = append(stack, 4)
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
peek := stack[len(stack)-1]
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
pop := stack[len(stack)-1]
|
||||
stack = stack[:len(stack)-1]
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
size := len(stack)
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
isEmpty := len(stack) == 0
|
||||
```
|
||||
@@ -161,23 +161,23 @@
|
||||
/* 初始化堆疊 */
|
||||
// Swift 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
var stack: [Int] = []
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.append(1)
|
||||
stack.append(3)
|
||||
stack.append(2)
|
||||
stack.append(5)
|
||||
stack.append(4)
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
let peek = stack.last!
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
let pop = stack.removeLast()
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
let size = stack.count
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
let isEmpty = stack.isEmpty
|
||||
```
|
||||
@@ -186,25 +186,25 @@
|
||||
|
||||
```javascript title="stack.js"
|
||||
/* 初始化堆疊 */
|
||||
// JavaScript 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
// JavaScript 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
const stack = [];
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.push(1);
|
||||
stack.push(3);
|
||||
stack.push(2);
|
||||
stack.push(5);
|
||||
stack.push(4);
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
const peek = stack[stack.length-1];
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
const pop = stack.pop();
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
const size = stack.length;
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
const is_empty = stack.length === 0;
|
||||
```
|
||||
@@ -213,25 +213,25 @@
|
||||
|
||||
```typescript title="stack.ts"
|
||||
/* 初始化堆疊 */
|
||||
// TypeScript 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
// TypeScript 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
const stack: number[] = [];
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.push(1);
|
||||
stack.push(3);
|
||||
stack.push(2);
|
||||
stack.push(5);
|
||||
stack.push(4);
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
const peek = stack[stack.length - 1];
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
const pop = stack.pop();
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
const size = stack.length;
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
const is_empty = stack.length === 0;
|
||||
```
|
||||
@@ -301,23 +301,23 @@
|
||||
```kotlin title="stack.kt"
|
||||
/* 初始化堆疊 */
|
||||
val stack = Stack<Int>()
|
||||
|
||||
|
||||
/* 元素入堆疊 */
|
||||
stack.push(1)
|
||||
stack.push(3)
|
||||
stack.push(2)
|
||||
stack.push(5)
|
||||
stack.push(4)
|
||||
|
||||
|
||||
/* 訪問堆疊頂元素 */
|
||||
val peek = stack.peek()
|
||||
|
||||
|
||||
/* 元素出堆疊 */
|
||||
val pop = stack.pop()
|
||||
|
||||
|
||||
/* 獲取堆疊的長度 */
|
||||
val size = stack.size
|
||||
|
||||
|
||||
/* 判斷是否為空 */
|
||||
val isEmpty = stack.isEmpty()
|
||||
```
|
||||
@@ -325,7 +325,28 @@
|
||||
=== "Ruby"
|
||||
|
||||
```ruby title="stack.rb"
|
||||
# 初始化堆疊
|
||||
# Ruby 沒有內建的堆疊類別,可以把 Array 當作堆疊來使用
|
||||
stack = []
|
||||
|
||||
# 元素入堆疊
|
||||
stack << 1
|
||||
stack << 3
|
||||
stack << 2
|
||||
stack << 5
|
||||
stack << 4
|
||||
|
||||
# 訪問堆疊頂元素
|
||||
peek = stack.last
|
||||
|
||||
# 元素出堆疊
|
||||
pop = stack.pop
|
||||
|
||||
# 獲取堆疊的長度
|
||||
size = stack.length
|
||||
|
||||
# 判斷是否為空
|
||||
is_empty = stack.empty?
|
||||
```
|
||||
|
||||
=== "Zig"
|
||||
@@ -336,7 +357,7 @@
|
||||
|
||||
??? pythontutor "視覺化執行"
|
||||
|
||||
https://pythontutor.com/render.html#code=%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E6%A0%88%0A%20%20%20%20%23%20Python%20%E6%B2%A1%E6%9C%89%E5%86%85%E7%BD%AE%E7%9A%84%E6%A0%88%E7%B1%BB%EF%BC%8C%E5%8F%AF%E4%BB%A5%E6%8A%8A%20list%20%E5%BD%93%E4%BD%9C%E6%A0%88%E6%9D%A5%E4%BD%BF%E7%94%A8%0A%20%20%20%20stack%20%3D%20%5B%5D%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E6%A0%88%0A%20%20%20%20stack.append%281%29%0A%20%20%20%20stack.append%283%29%0A%20%20%20%20stack.append%282%29%0A%20%20%20%20stack.append%285%29%0A%20%20%20%20stack.append%284%29%0A%20%20%20%20print%28%22%E6%A0%88%20stack%20%3D%22,%20stack%29%0A%0A%20%20%20%20%23%20%E8%AE%BF%E9%97%AE%E6%A0%88%E9%A1%B6%E5%85%83%E7%B4%A0%0A%20%20%20%20peek%20%3D%20stack%5B-1%5D%0A%20%20%20%20print%28%22%E6%A0%88%E9%A1%B6%E5%85%83%E7%B4%A0%20peek%20%3D%22,%20peek%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E6%A0%88%0A%20%20%20%20pop%20%3D%20stack.pop%28%29%0A%20%20%20%20print%28%22%E5%87%BA%E6%A0%88%E5%85%83%E7%B4%A0%20pop%20%3D%22,%20pop%29%0A%20%20%20%20print%28%22%E5%87%BA%E6%A0%88%E5%90%8E%20stack%20%3D%22,%20stack%29%0A%0A%20%20%20%20%23%20%E8%8E%B7%E5%8F%96%E6%A0%88%E7%9A%84%E9%95%BF%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28stack%29%0A%20%20%20%20print%28%22%E6%A0%88%E7%9A%84%E9%95%BF%E5%BA%A6%20size%20%3D%22,%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%AD%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28stack%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E6%A0%88%E6%98%AF%E5%90%A6%E4%B8%BA%E7%A9%BA%20%3D%22,%20is_empty%29&cumulative=false&curInstr=2&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
https://pythontutor.com/render.html#code=%22%22%22Driver%20Code%22%22%22%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20%23%20%E5%88%9D%E5%A7%8B%E5%8C%96%E5%A0%86%E7%96%8A%0A%20%20%20%20%23%20Python%20%E6%B2%92%E6%9C%89%E5%85%A7%E5%BB%BA%E7%9A%84%E5%A0%86%E7%96%8A%E9%A1%9E%E5%88%A5%EF%BC%8C%E5%8F%AF%E4%BB%A5%E6%8A%8A%20list%20%E7%95%B6%E4%BD%9C%E5%A0%86%E7%96%8A%E4%BE%86%E4%BD%BF%E7%94%A8%0A%20%20%20%20stack%20%3D%20%5B%5D%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%85%A5%E5%A0%86%E7%96%8A%0A%20%20%20%20stack.append%281%29%0A%20%20%20%20stack.append%283%29%0A%20%20%20%20stack.append%282%29%0A%20%20%20%20stack.append%285%29%0A%20%20%20%20stack.append%284%29%0A%20%20%20%20print%28%22%E5%A0%86%E7%96%8A%20stack%20%3D%22%2C%20stack%29%0A%0A%20%20%20%20%23%20%E8%A8%AA%E5%95%8F%E5%A0%86%E7%96%8A%E9%A0%82%E5%85%83%E7%B4%A0%0A%20%20%20%20peek%20%3D%20stack%5B-1%5D%0A%20%20%20%20print%28%22%E5%A0%86%E7%96%8A%E9%A0%82%E5%85%83%E7%B4%A0%20peek%20%3D%22%2C%20peek%29%0A%0A%20%20%20%20%23%20%E5%85%83%E7%B4%A0%E5%87%BA%E5%A0%86%E7%96%8A%0A%20%20%20%20pop%20%3D%20stack.pop%28%29%0A%20%20%20%20print%28%22%E5%87%BA%E5%A0%86%E7%96%8A%E5%85%83%E7%B4%A0%20pop%20%3D%22%2C%20pop%29%0A%20%20%20%20print%28%22%E5%87%BA%E5%A0%86%E7%96%8A%E5%BE%8C%20stack%20%3D%22%2C%20stack%29%0A%0A%20%20%20%20%23%20%E7%8D%B2%E5%8F%96%E5%A0%86%E7%96%8A%E7%9A%84%E9%95%B7%E5%BA%A6%0A%20%20%20%20size%20%3D%20len%28stack%29%0A%20%20%20%20print%28%22%E5%A0%86%E7%96%8A%E7%9A%84%E9%95%B7%E5%BA%A6%20size%20%3D%22%2C%20size%29%0A%0A%20%20%20%20%23%20%E5%88%A4%E6%96%B7%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%0A%20%20%20%20is_empty%20%3D%20len%28stack%29%20%3D%3D%200%0A%20%20%20%20print%28%22%E5%A0%86%E7%96%8A%E6%98%AF%E5%90%A6%E7%82%BA%E7%A9%BA%20%3D%22%2C%20is_empty%29&cumulative=false&curInstr=2&heapPrimitives=nevernest&mode=display&origin=opt-frontend.js&py=311&rawInputLstJSON=%5B%5D&textReferences=false
|
||||
|
||||
## 堆疊的實現
|
||||
|
||||
|
||||
Reference in New Issue
Block a user