本文主要是介绍力扣 503. 下一个更大元素 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目来源:https://leetcode.cn/problems/next-greater-element-ii/description/
C++题解:因为是循环数组,所以对数组进行了两次遍历,相当于循环。使用了栈,一个存放元素,一个存放索引,用来更新result。
class Solution {
public:vector<int> nextGreaterElements(vector<int>& nums) {int len = nums.size();vector<int> result(len, -1);stack<int> st, stind;st.push(nums[0]);stind.push(0); for(int i = 1; i < len; i++) {while(!st.empty() && nums[i] > st.top()) {st.pop();result[stind.top()] = nums[i];stind.pop();}st.push(nums[i]);stind.push(i);}for(int i = 0; i < len; i++) {while(!st.empty() && nums[i] > st.top()) {st.pop();result[stind.top()] = nums[i];stind.pop();}st.push(nums[i]);stind.push(i);}return result;}
};
这篇关于力扣 503. 下一个更大元素 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!