The Next Greater Element I solutions are below.
15 Jun 2024•Easy•C++ / Python / TypeScript
Next Greater Element I
C++, Python and TypeScript solutions for Next Greater Element I.
Solution files
Python•next-greater-element-i/synced-solution.py
def nextGreaterElement(nums1, nums2):
next_greater = {}
stack = []
for num in reversed(nums2):
while stack and stack[-1] <= num:
stack.pop()
next_greater[num] = stack[-1] if stack else -1
stack.append(num)
return [next_greater[num] for num in nums1]
C++•next-greater-element-i/synced-solution.cpp
class Solution {
public:
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {
unordered_map<int, int> next_greater;
stack<int> st;
for (int i = nums2.size() - 1; i >= 0; i--) {
while (!st.empty() && st.top() <= nums2[i]) {
st.pop();
}
next_greater[nums2[i]] = st.empty() ? -1 : st.top();
st.push(nums2[i]);
}
vector<int> result;
for (int num : nums1) {
result.push_back(next_greater[num]);
}
return result;
}
};
TypeScript•next-greater-element-i/synced-solution.ts
function nextGreaterElement(nums1: number[], nums2: number[]): number[] {
const nextGreater = new Map<number, number>();
const stack: number[] = [];
for (let i = nums2.length - 1; i >= 0; i--) {
while (stack.length > 0 && stack[stack.length - 1] <= nums2[i]) {
stack.pop();
}
nextGreater.set(nums2[i], stack.length > 0 ? stack[stack.length - 1] : -1);
stack.push(nums2[i]);
}
return nums1.map(num => nextGreater.get(num)!);
}