Given a circular array (the next element of the last element is the first element of the array), print the Next Greater Number for every element. The Next Greater Number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn’t exist, output -1 for this number.
和|有点类似,稍微加一个判断,一次通过。
/**
* @param {number[]} nums
* @return {number[]}
*/
var nextGreaterElements = function(nums) {
var i=0;
var result=[];
for(var j=0;j<nums.length;j++){
result[j]=-1;
i=j;
while(1){
if(++i>nums.length-1)i=0;
if(i==j)break;
if(nums[i]>nums[j]){
result[j]=nums[i];
break;
}
}
}
return result;
};
总结
又看到一个栈的方法做的,参考链接:https://leetcode.com/articles/next-greater-element-ii/
这个方法看上去虽然费解,但是事件效率是高了的。