Problem
Given a circular integer array nums
(i.e., the next element of nums[nums.length - 1]
is nums[0]
), return the next greater number for every element in nums
.
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, return -1
for this number.
Examples
Example 1:
|
|
Example 2:
|
|
Solution
Method 1 - Monotonic Decreasing Stack on Indices with Twice the Loop
This is similar to NGR - Nearest Greater Element to Right of every element OR Next Greater Element 1. But we need to use indices as input to the stack and also we have to loop twice:
Code
|
|
Complexity
- ⏰ Time complexity:
O(n)
- 🧺 Space complexity:
O(n)