这次是循环数组,所以属于一共遍历两次,第一次到了结尾,把i置为0,继续遍历。
class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]:
result=[-1 for _ in range(len(nums))]
stack=[]
count=0
flag=False
i=0
while i<len(nums):
while stack and nums[stack[-1]]<nums[i]:
s=stack[-1]
print(s)
stack=stack[:-1]
result[s]=nums[i]
stack.append(i)
i+=1
if i==len(nums) and not flag:
i=0
flag=True
return result也可以直接遍历2*n-1的元素,然后通过取余的方式来得到当前下标。
class Solution:
def nextGreaterElements(self, nums: List[int]) -> List[int]:
result=[-1 for _ in range(len(nums))]
stack=[]
count=0
flag=False
for i in range(2*len(nums)-1):
while stack and nums[stack[-1]]<nums[(i%(len(nums)))]:
s=stack[-1]
stack=stack[:-1]
result[s]=nums[i%(len(nums))]
stack.append((i%(len(nums))))
return result
京公网安备 11010502036488号