public class Solution {
public int[] nextGreaterElements(int[] nums) {
int[] search=new int[nums.length*2]; //完成全部搜索需要2*nums.length空间
int[] ans=new int[nums.length];
for(int i=0;i<nums.length;i++){
search[i]=nums[i];
search[i+nums.length]=nums[i];
}
int i=0,j=0;
Stack<Integer> s=new Stack<Integer>(); //存储数组下标
while(j<search.length){
if(s.empty()){
if(i<nums.length){
s.push(i);
i++;
}
j++;
}else if(nums[s.peek()]>=search[j]){
if(i<nums.length){
s.push(i);
i++;
}
j++;
}else{
ans[s.pop()]=search[j];
}
}
while(!s.empty()){
ans[s.pop()]=-1;
}
return ans;
}
}
leetcode503
最新推荐文章于 2022-05-23 12:02:32 发布