给定一个循环的数组 nums ,即 nums 的第一个元素可以视为是最后一个元素的下一个元素。返回 nums 中每个元素的后面第一个比他大的元素,如果不存在比他大的元素,则返回 -1。
例如,有数组 [2,3,4,1] 则返回 [3,4,-1,2] ,其中第一二个元素后面第一个比他们大的元素均是下一个元素,第三个元素是最大的,所以输出 -1,而最后一个元素的下一个元素认为是数组的第一个元素,因此是 2。
数据范围:数组长度满足
,数组中的元素满足
[2,3,4,1]
[3,4,-1,2]
其中第一二个元素后面第一个比他们大的元素均是下一个元素,第三个元素是最大的,所以输出 -1,而最后一个元素的下一个元素认为是数组的第一个元素,因此是 2
[4,3,2,1]
[-1,4,4,4]
package main
//import "fmt"
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型一维数组
* @return int整型一维数组
*/
func nextBigger( nums []int ) []int {
n:=len(nums)
ans:=make([]int,n)
for i,_:=range ans{
ans[i]=-1
}
stk:=[]int{}
for i,x:=range append(nums,nums...){
for len(stk)>0&&nums[stk[len(stk)-1]]<x{
ans[stk[len(stk)-1]]=x
stk=stk[:len(stk)-1]
}
stk=append(stk,i%n)
}
return ans
}