问题描述
class stack():
def __init__(self):
self.s=[]
def push(self,x):
self.s.append(x)
def pop(self):
if self.s==[]:
return -1
else:
return self.s.pop()
def peek(self):
return self.s[-1]
def isempty(s):
return len(s)
def size(self):
return len(self.s)
def printNGE(arr):
v=[]
n=len(arr)
s=stack()
for i in range(n):
if s.size()==0:
v.append(-1)
elif s.size()>0 and s.peek()>arr[i]:
v.append(s.peek())
elif s.size()>0 and s.peek()<=arr[i]:
while(s.size()>0 and s.peek()<=arr[i]):
s.pop()
if s.size==0:
v.append(-1)
else:
v.append(s.peek())
s.push(arr[i])
print('s z',s.peek(),s.size())
return v
arr=[1,3,2,4]
x=printNGE(arr)
print(x)
我正在尝试使用堆栈在python中实现左侧最大的整数,我得到一个eror,如果更改(n-1,-1,-1的循环,则代码对于左侧的最大int可以正常工作)
File "c:\Users\Amit\Desktop\greatrightstak.py",line 42,in <module>
x=printNGE(arr)
File "c:\Users\Amit\Desktop\greatrightstak.py",line 35,in printNGE
v.append(s.peek())
File "c:\Users\Amit\Desktop\greatrightstak.py",line 13,in peek
return self.s[-1]
IndexError: list index out of range
解决方法
您只是有一个小错误,缺少括号:
lodash
应该是
if s.size==0: