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.
Key Insight: To handle the circular nature, iterate through the array twice (conceptually concatenating it with itself). Use modulo arithmetic to wrap around. The monotonic stack tracks indices, and we only need to assign results in the first pass.
nums = [1,2,1][2,-1,2]nums = [1,2,3,4,3][2,3,4,-1,4]1 <= nums.length <= 10^4-10^9 <= nums[i] <= 10^9Click "Run" to execute your code against test cases
Socratic guidance - I'll ask questions, not give answers