C++ concise O(N) time solution using stack
\tclass Solution {\n\tpublic:\n\t\tvector nextGreaterElements(vector& nums) {\n\t\t\tstack st;\n\t\t\tvector ans;\n\t\t\tfor(int i=nums.size()-1;i>=0;i--)\n\t\t
\tclass Solution {\n\tpublic:\n\t\tvector<int> nextGreaterElements(vector<int>& nums) {\n\t\t\tstack<int> st;\n\t\t\tvector<int> ans;\n\t\t\tfor(int i=nums.size()-1;i>=0;i--)\n\t\t\t{\n\t\t\t\tst.push(nums[i]);\n\n\t\t\t}\n\n\t\t\tfor(int i=nums.size()-1;i>=0;i--)\n\t\t\t{\n\t\t\t\twhile(!st.empty() && nums[i]>=st.top())\n\t\t\t\t{\n\t\t\t\t\tst.pop();\n\t\t\t\t}\n\n\t\t\t\tif(st.empty())\n\t\t\t\t{\n\t\t\t\t\tans.push_back(-1);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tans.push_back(st.top());\n\t\t\t\t}\n\t\t\t\tst.push(nums[i]);\n\t\t\t}\n\t\t\treverse(ans.begin(),ans.end());\n\t\t\treturn ans;\n\n\t\t}\n\t};
['Stack', 'C++']