当前位置: 首页 > news >正文

网站结构分类东莞vi设计公司排名

网站结构分类,东莞vi设计公司排名,律师推广网站排名,大宅装修代码随想录刷题60Day 目录 单调栈简介 单调栈的应用 下次更高温 下一个更大元素1 下一个更大元素2 接雨水 柱状图中最大矩形 单调栈简介 单调栈(Monotonic Stack)是一种特殊的栈数据结构,它满足元素的单调性,这种单调性需…

代码随想录刷题60Day


目录

单调栈简介

单调栈的应用

下次更高温

下一个更大元素1

下一个更大元素2

接雨水

柱状图中最大矩形


单调栈简介

单调栈(Monotonic Stack)是一种特殊的栈数据结构,它满足元素的单调性,这种单调性需要自己建立和维护。单调栈分为单调递增栈和单调递减栈两种类型。

单调递增栈的特点是栈内元素从栈底到栈顶依次递增,而单调递减栈则是栈内元素从栈底到栈顶依次递减。

单调栈的主要应用是解决一些与找到元素的下一个更大或更小相关的问题。它通过维护一个递增或递减的栈,可以在常数时间内找到每个元素的下一个更大或更小的元素。

单调栈的基本操作包括:

入栈:将元素压入栈顶,同时保持栈的单调性。

出栈:从栈顶移除元素。

查找:检查栈顶元素,获取当前元素的下一个更大或更小的元素。

单调栈的应用

下次更高温

    vector<int> dailyTemperatures(vector<int>& temperatures) {int size = temperatures.size();vector<int> result(size, 0);stack<int> stack;stack.push(0);for (int i = 1; i < size; ++i){int j = stack.top();if (temperatures[i] > temperatures[j]){while (!stack.empty() && temperatures[i] > temperatures[j]){result[j] = i - j;stack.pop();if (!stack.empty())j = stack.top();}}stack.push(i);}return result;}

下一个更大元素1

	vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {int size1 = nums1.size();int size2 = nums2.size();unordered_map<int, int> umap;stack<int> stack;vector<int> result;stack.push(0);for (int i = 1; i < size2; ++i){int j = stack.top();if (nums2[j] < nums2[i]){while (!stack.empty() && nums2[j] < nums2[i]){umap.insert(pair<int, int>(nums2[j], nums2[i]));stack.pop();if (!stack.empty())j = stack.top();}}stack.push(i);}for (int i = 0; i < size1; ++i){if (umap.find(nums1[i]) != umap.end())result.push_back(umap[nums1[i]]);elseresult.push_back(-1);}return result;}

下一个更大元素2

	vector<int> nextGreaterElements(vector<int>& nums) {int size = nums.size();vector<int> dp(size, -1);stack<int> mystack;mystack.push(0);for (int i = 1; i < size; ++i){if (nums[i] > nums[mystack.top()]){while (!mystack.empty() && nums[i] > nums[mystack.top()]){dp[mystack.top()] = nums[i];if (!mystack.empty())mystack.pop();					}}mystack.push(i);}for (int i = 0; i < size; ++i){if (nums[i] > nums[mystack.top()]){while (!mystack.empty() && nums[i] > nums[mystack.top()]){dp[mystack.top()] = nums[i];if (!mystack.empty())mystack.pop();					}}mystack.push(i);}return dp;}

接雨水

	int trap(vector<int>& h){if (h.size() < 3)return 0;stack<int> mystack;int result = 0;mystack.push(0);for (int i = 1; i < h.size(); ++i){if (h[mystack.top()] > h[i])mystack.push(i);else if (h[mystack.top()] < h[i]){while (!mystack.empty() && h[mystack.top()] < h[i]){int mid = mystack.top();mystack.pop();if (!mystack.empty())result += (min(h[mystack.top()], h[i]) - h[mid]) * (i - mystack.top() - 1);				}if (!mystack.empty() && h[mystack.top()] == h[i])mystack.pop();mystack.push(i);}else{mystack.pop();mystack.push(i);}}return result;}

柱状图中最大矩形

	int largestRectangleArea(vector<int>& h) {h.push_back(0);int size = h.size();stack<int> mystack;int result = h[0];mystack.push(0);for (int i = 1; i < size; ++i){if (h[i] == h[mystack.top()]){mystack.pop();}else if (h[i] < h[mystack.top()]){int mid, left;while (!mystack.empty() && h[i] < h[mystack.top()]){mid = mystack.top();mystack.pop();if (!mystack.empty())left = mystack.top();elseleft = -1;result = max(result, (i - left - 1) * h[mid]);}}mystack.push(i);}return result;}

http://www.yayakq.cn/news/539848/

相关文章:

  • 四川建设集团有限公司网站加盟什么网站建设
  • 安义网站建设福州做网站哪家公司好
  • 领券购买网站是怎么做的广州网站建设出售
  • 庐山市建设规划局网站固安做网站的公司
  • 一个购物交易网站怎么做中国国际贸易网站
  • 杭州医疗器械网站制作官方网站建设的目的
  • 企业网站的基本内容后台风格网站
  • 网站技术招标怎么做图文广告公司取名
  • 关于协会网站建设的建议软件开发工程师工作条件
  • 密云做网站网站关键词怎么做可以排名
  • iis配置网站访问权限成都中国旅行社金牛三分社
  • 用seo对网站做分析网站做加QQ群链接
  • 余姚网站建设的公司建设银行网站认证
  • 大型信息类PC网站适合vue做吗网站建设昆明
  • 网站建设客户群体分析php网站打开慢
  • 网站发布信息的基本流程做本地团购网站
  • html5企业网站建设广州天河区有什么好玩的
  • 制作博客网站wordpress 打赏不能用
  • 黄山做网站seo快速排名软件易下拉霸屏
  • 做外贸主页网站用什么的空间好点做app需要什么条件
  • 网站内移动的图片怎么做的不花钱做网站
  • 用html5做的静态网站阿里巴巴logo图片
  • 网站的布局怎么做网站如何交换链接
  • 福田做棋牌网站建设哪家公司便宜智能产品
  • 网站建设设计多少钱网站开发 -(广告)
  • 品牌公关案例应用关键词优化
  • 株洲定制型网站建设太原网站建设公司哪家好
  • 怎样优化网站关键词网站建设 服务内容 费用
  • 寿县网站建设陕西省私募基金协会
  • 工信部资质查询网站免费制作小程序平台