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

百度网站评价高唐网站

百度网站评价,高唐网站,上海网站开发报价,网络ui设计培训班单调栈 单调栈通过维护数据的单调性,将原本O(n)的暴力解法优化到O(n),是解决一系列区间极值问题的利器。掌握单调栈的关键在于理解问题本质并选择合适的单调性方向。 使用技巧 确定单调性:根据问题需求选择递增栈还是递减栈 找下一个更大元素…

单调栈

单调栈通过维护数据的单调性,将原本O(n²)的暴力解法优化到O(n),是解决一系列区间极值问题的利器。掌握单调栈的关键在于理解问题本质并选择合适的单调性方向。

使用技巧

  1. 确定单调性:根据问题需求选择递增栈还是递减栈

    • 找下一个更大元素 → 单调递减栈

    • 找下一个更小元素 → 单调递增栈

  2. 存储内容:根据问题决定栈内存储元素值还是索引

    • 需要计算宽度 → 存储索引

    • 只需要比较值 → 存储值

  3. 边界处理:考虑数组边界情况,可添加哨兵元素简化逻辑

  4. 多步操作:有时需要先从左到右扫描,再从右到左扫描

基本概念

1. 单调栈特性

  • 单调递增栈:栈内元素从栈底到栈顶保持递增顺序

  • 单调递减栈:栈内元素从栈底到栈顶保持递减顺序

2. 常见应用场景

  • 寻找下一个更大/更小元素

  • 计算柱状图中的最大矩形

  • 解决接雨水问题

  • 股票跨度问题

 算法实现

//单调递增栈vector<int> nextGreaterElement(vector<int>& nums) {int n = nums.size();vector<int> res(n, -1);stack<int> st; // 存储的是元素下标for (int i = 0; i < n; i++) {while (!st.empty() && nums[st.top()] < nums[i]) {res[st.top()] = nums[i]; // 当前元素是栈顶元素的下一个更大元素st.pop();}st.push(i);}return res;
}
//单调递减栈vector<int> nextSmallerElement(vector<int>& nums) {int n = nums.size();vector<int> res(n, -1);stack<int> st;for (int i = 0; i < n; i++) {while (!st.empty() && nums[st.top()] > nums[i]) {res[st.top()] = nums[i]; // 当前元素是栈顶元素的下一个更小元素st.pop();}st.push(i);}return res;
}

经典应用

//下一个更大元素  (LeetCode 496)
vector<int> nextGreaterElement(vector<int>& nums1, vector<int>& nums2) {stack<int> st;unordered_map<int, int> nextGreater;for (int num : nums2) {while (!st.empty() && st.top() < num) {nextGreater[st.top()] = num;st.pop();}st.push(num);}vector<int> res;for (int num : nums1) {res.push_back(nextGreater.count(num) ? nextGreater[num] : -1);}return res;
}

 

//柱状图中的最大矩形 (LeetCode 84)int largestRectangleArea(vector<int>& heights) {stack<int> st;heights.push_back(0); // 添加哨兵int maxArea = 0;for (int i = 0; i < heights.size(); i++) {while (!st.empty() && heights[st.top()] > heights[i]) {int h = heights[st.top()];st.pop();int w = st.empty() ? i : i - st.top() - 1;maxArea = max(maxArea, h * w);}st.push(i);}return maxArea;
}
//接雨水 (LeetCode 42)int trap(vector<int>& height) {stack<int> st;int water = 0;for (int i = 0; i < height.size(); i++) {while (!st.empty() && height[st.top()] < height[i]) {int bottom = height[st.top()];st.pop();if (st.empty()) break;int left = st.top();int h = min(height[left], height[i]) - bottom;int w = i - left - 1;water += h * w;}st.push(i);}return water;
}
//股票跨度问题 (LeetCode 901)class StockSpanner {stack<pair<int, int>> st; // {price, span}public:StockSpanner() {}int next(int price) {int span = 1;while (!st.empty() && st.top().first <= price) {span += st.top().second;st.pop();}st.push({price, span});return span;}
};
//每日温度 (LeetCode 739)
vector<int> dailyTemperatures(vector<int>& T) {int n = T.size();vector<int> res(n, 0);stack<int> st;for (int i = 0; i < n; i++) {while (!st.empty() && T[st.top()] < T[i]) {res[st.top()] = i - st.top();st.pop();}st.push(i);}return res;
}

 


文章转载自:

http://7WKbP5YL.qsmdd.cn
http://sfK6PPEn.qsmdd.cn
http://emRBG6KQ.qsmdd.cn
http://B16eVm2r.qsmdd.cn
http://v9iTRoww.qsmdd.cn
http://RDQlpIq2.qsmdd.cn
http://GFxLBGpW.qsmdd.cn
http://DRR2zHJm.qsmdd.cn
http://jXSQsSwL.qsmdd.cn
http://M8hjTcY9.qsmdd.cn
http://PZ1mJGCv.qsmdd.cn
http://yQf5oVaH.qsmdd.cn
http://blPkXPIG.qsmdd.cn
http://hwfRcgO3.qsmdd.cn
http://dEeAYDrj.qsmdd.cn
http://6DBn6W74.qsmdd.cn
http://bAt27W2d.qsmdd.cn
http://kG3scrHG.qsmdd.cn
http://DibQdRij.qsmdd.cn
http://tyCfYm9u.qsmdd.cn
http://7TA83WSS.qsmdd.cn
http://MmSnCcba.qsmdd.cn
http://ggD33ZHX.qsmdd.cn
http://shLHhX8e.qsmdd.cn
http://eNXmDATx.qsmdd.cn
http://GkI89swJ.qsmdd.cn
http://6kj1r9ts.qsmdd.cn
http://N6FZTxWv.qsmdd.cn
http://iCW5xevH.qsmdd.cn
http://kfFCz7vJ.qsmdd.cn
http://www.dtcms.com/wzjs/707149.html

相关文章:

  • 公司网站界面如何设计wordpress附近商家
  • 浙江做公司网站多少钱天津网站建设中心
  • 网站备案免费的吗做58网站怎么赚钱
  • 用易语言做网站重庆建设工程信息网官网入口网页
  • 桂林临桂区建设局网站电力建设网站进不去
  • 高校网站建设汇报汉源县建设局网站
  • 传媒免费网站建设wordpress主题 错误
  • 网站建设周志200字西安做网站要多少钱
  • 0基础1小时网站建设教程互联网广告投放
  • 电商网站的银行支付接入该怎么做wordpress+怎么改密码忘记
  • 个人婚礼网站模板表情包在线制作网站
  • 青岛网站排名优化长沙装修公司排名榜
  • 装饰公司网站建设流程盐边网站建设
  • 做go富集的网站filetype:pdf wordpress
  • 完整网站源码下载网络营销的现状
  • 广州专业网站建设哪家好wordpress 复合筛选
  • 温州多语言网站建设有什么软件可以制作抽奖页面
  • 设计网站都有哪些室内装饰设计费收费标准
  • emlog怎么做视频网站科技公司建设网站公司
  • 网站建设创业计划书h5网站用什么软件做
  • 做湲网站手机百度经验首页登录官网
  • 网站服务器信息查询优惠网站怎么做
  • 上海网站哪家好数据分析师是干嘛的
  • 网站建设ssc源码修复实验室网站模板
  • 郑州网站优化推广培训免费素材网站pexels
  • 无锡网站关键词优化郑州logo设计公司
  • 思途做的旅游网站网站建设罗贤伟
  • 轻松做网站佛山网站到首页排名
  • 微信公众号怎么做网站发布公司信息的网站
  • wordpress 大站点建网站要多少钱一台