503. 下一个更大元素 II

循环数组有取余,同时遍历范围扩大为两倍。

  1. class Solution {
  2. public:
  3. vector<int> nextGreaterElements(vector<int>& nums) {
  4. stack<int> st;
  5. vector<int> result(nums.size(),-1);
  6. for(int i=0;i<nums.size()*2;i++)
  7. {
  8. while(!st.empty() && nums[i%nums.size()] > nums[st.top()])
  9. {
  10. result[st.top()] = nums[i%nums.size()];
  11. st.pop();
  12. }
  13. st.push(i%nums.size());
  14. }
  15. return result;
  16. }
  17. };