Next Greater Element II
给个数组A, 他是环状数组. 求一个数组B, B的每一个元素都是A中下一个比当前大的元素. 这个题和I其实差不多的做法, 也是用stack倒着存数组.
public class Solution {
public int[] nextGreaterElements(int[] nums) {
int n = nums.length;
int[] res = new int[nums.length];
Stack<Integer> st = new Stack<>();
Arrays.fill(res, -1);
for(int i = 0; i < n*2; i++) {
int num = nums[i%n];
while(!st.isEmpty()&&nums[st.peek()] < num)
res[st.pop()] = num;
if(i < n)
st.push(i);
}
return res;
}
}