您的位置:首页 > 娱乐 > 明星 > 网上投诉平台_南宁西乡塘区网站建设_外贸获客软件_免费搭建网站平台

网上投诉平台_南宁西乡塘区网站建设_外贸获客软件_免费搭建网站平台

2025/3/11 8:04:24 来源:https://blog.csdn.net/qq_45964225/article/details/146096181  浏览:    关键词:网上投诉平台_南宁西乡塘区网站建设_外贸获客软件_免费搭建网站平台
网上投诉平台_南宁西乡塘区网站建设_外贸获客软件_免费搭建网站平台

思路和时间复杂度

  1. 思路:题目中的意思为是值相同的情况下的右边第一个最大的元素,所以直接在nums2中寻找下一个最大元素即可,要用map记录一下下标和值,在nums中找到下一个最大值,还要确认当前比较的值是否在num1中
  2. 时间复杂度: O(n)      

代码

class Solution {
public:vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {vector<int> res(nums1.size(), -1);// 遍历nums2,找到nums2的每一个元素在右边第一个大的元素,然后利用元素值定位nums1,找到下标unordered_map<int, int> ump;for(int i = 0; i < nums1.size(); i++){ump[nums1[i]] = i;}stack<int> st;st.push(0);for(int i = 1; i < nums2.size(); i++){if(nums2[i] > nums2[st.top()] ){while(!st.empty() && nums2[i] > nums2[st.top()] ){if(ump.count(nums2[st.top()]) >= 1){int index = ump[nums2[st.top()]];res[index] = nums2[i];}st.pop();}st.push(i);}else{st.push(i);}}return res;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com