我正在嘗試執行以下 Python 代碼:
arr = [3, 4, 1, 6, 2]
n = len(arr)
res = [1] * n
stack = [-1]
#left
for i in range(n):
print(i)
while len(stack) > 1 and arr[stack[-1]] < arr[i]:
stack.pop()
res[i] = i - stack[-1] - 1
stack.append(i)
雖然我沒有更改i代碼內部的值,但它正在列印如下:
0
1
0
2
3
2
1
4
知道它為什么會這樣嗎?Python 3.6.9 是編譯器。
編輯:添加螢屏截圖作為參考。

uj5u.com熱心網友回復:
我復制并粘貼了您的代碼,它在 3.9 和
uj5u.com熱心網友回復:
我猜你正在以互動方式運行它。您看到的是stack.pop()與您的顯式print()陳述句交錯的回傳值。
如果您分配(并忽略)pop 的回傳值,您將獲得您期望的輸出。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/327041.html
下一篇:從未使用過宣告-但它是?
