6.Next Greater Element I
Input: nums1 = [4,1,2], nums2 = [1,3,4,2].
Output: [-1,3,-1]
Explanation:
For number 4 in the first array, you cannot find the next greater number for it in the second array, so output -1.
For number 1 in the first array, the next greater number for it in the second array is 3.
For number 2 in the first array, there is no next greater number for it in the second array, so output -1.Solution : (Using Stack)
class Solution
{
public:
vector<int> nextGreaterElement(vector<int> &nums1, vector<int> &nums2)
{
vector<int> v;
if (nums1.size() == 0 || nums2.size() == 0)
{
return v;
}
unordered_map<int, int> m;
stack<int> s;
s.push(nums2[0]);
for (int i = 1; i < nums2.size(); i++)
{
while (!s.empty() && s.top() < nums2[i])
{
int x = s.top();
m.insert({x, nums2[i]});
s.pop();
}
s.push(nums2[i]);
}
for (int i = 0; i < nums1.size(); i++)
{
if (m[nums1[i]] != 0)
{
v.push_back(m[nums1[i]]);
}
else
{
v.push_back(-1);
}
}
return v;
}
};Last updated