Python•next-greater-element-i/synced-solution.py
def nextGreaterElement(nums1, nums2):
next_greater = {}
stack = []
for num in reversed(nums2):
while stack and stack[-class="syntax-number">1] <= num:
stack.pop()
next_greater[num] = stack[-class="syntax-number">1] if stack else -class="syntax-number">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() - class="syntax-number">1; i >= class="syntax-number">0; i--) {
while (!st.empty() && st.top() <= nums2[i]) {
st.pop();
}
next_greater[nums2[i]] = st.empty() ? -class="syntax-number">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 - class="syntax-number">1; i >= class="syntax-number">0; i--) {
while (stack.length > class="syntax-number">0 && stack[stack.length - class="syntax-number">1] <= nums2[i]) {
stack.pop();
}
nextGreater.set(nums2[i], stack.length > class="syntax-number">0 ? stack[stack.length - class="syntax-number">1] : -class="syntax-number">1);
stack.push(nums2[i]);
}
return nums1.map(num => nextGreater.get(num)!);
}