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

微信网站建设报价互联网销售包括哪些

微信网站建设报价,互联网销售包括哪些,房屋设计师,wordpress判断首页题目 https://leetcode.cn/problems/max-chunks-to-make-sorted-ii/description/ 单调栈解法复现:输入 [1,1,0,0,1] 让我们一步步复现单调栈解法在输入 [1,1,0,0,1] 时的执行过程: 1. 处理第一个元素 1 栈操作:栈为空,直接压…

题目

https://leetcode.cn/problems/max-chunks-to-make-sorted-ii/description/

单调栈解法复现:输入 [1,1,0,0,1]

让我们一步步复现单调栈解法在输入 [1,1,0,0,1] 时的执行过程:

1. 处理第一个元素 1

  • 栈操作:栈为空,直接压入 1
  • 栈状态[1]
  • 块划分:当前块为 [1],最大值为 1

2. 处理第二个元素 1

  • 比较1 == 栈顶(1),满足 num >= st.top()
  • 栈操作:直接压入 1
  • 栈状态[1, 1]
  • 块划分:新增块 [1],最大值为 1
  • 当前块序列[1], [1]

3. 处理第三个元素 0

  • 比较0 < 栈顶(1),触发合并逻辑:
    1. 弹出栈顶 1,记录 maxVal = 1
    2. 栈非空,且 st.top() = 1 > 0,继续弹出。
    3. 弹出 1 后,栈空,退出循环。
    4. 压入 maxVal = 1
  • 栈状态[1]
  • 块划分:合并块 [1, 1, 0],最大值为 1
  • 当前块序列[1, 1, 0]

4. 处理第四个元素 0

  • 比较0 < 栈顶(1),触发合并逻辑:
    1. 弹出栈顶 1,记录 maxVal = 1
    2. 栈空,退出循环。
    3. 压入 maxVal = 1
  • 栈状态[1]
  • 块划分:合并块 [1, 1, 0, 0],最大值为 1
  • 当前块序列[1, 1, 0, 0]

5. 处理第五个元素 1

  • 比较1 == 栈顶(1),满足 num >= st.top()
  • 栈操作:直接压入 1
  • 栈状态[1, 1]
  • 块划分:新增块 [1],最大值为 1
  • 最终块序列[1, 1, 0, 0], [1]

最终结果

  • 栈大小2
  • 最优划分[1, 1, 0, 0], [1]
  • 块数2

关键分析

  1. 合并逻辑的触发
    当遇到 0 时,由于 0 < 1,需要将前面的块合并,确保块的最大值单调递增。否则,若保留 [1], [1], [0],排序后 0 会出现在 1 前面,导致错误。

  2. 保留最大值的意义
    合并后压入 maxVal = 1,确保后续块的最大值必须 >=1,从而保证排序后整体有序。例如,若第五个元素是 2,则可形成新块 [2],最终块序列为 [1, 1, 0, 0], [2]

  3. 验证排序结果

    • 每个块内部排序:[0, 0, 1, 1], [1]
    • 连接后:[0, 0, 1, 1, 1],与原数组排序结果一致。

代码复现

#include <iostream>
#include <vector>
#include <stack>
using namespace std;int maxChunksToSorted(vector<int>& arr) {stack<int> st;for (int num : arr) {cout << "处理元素: " << num << ", 栈状态: ";// 打印当前栈vector<int> temp;stack<int> copy = st;while (!copy.empty()) {temp.push_back(copy.top());copy.pop();}for (int i = temp.size() - 1; i >= 0; i--) {cout << temp[i] << " ";}cout << endl;if (st.empty() || num >= st.top()) {st.push(num);cout << "  压入 " << num << endl;} else {int maxVal = st.top();st.pop();cout << "  弹出 " << maxVal << ", 记录 maxVal = " << maxVal << endl;while (!st.empty() && st.top() > num) {cout << "  继续弹出 " << st.top() << endl;st.pop();}st.push(maxVal);cout << "  压入 maxVal = " << maxVal << endl;}}return st.size();
}int main() {vector<int> arr = {1, 1, 0, 0, 1};cout << "最终块数: " << maxChunksToSorted(arr) << endl;return 0;
}

运行上述代码可观察到每一步的栈变化,验证整个处理过程。

http://www.dtcms.com/wzjs/444150.html

相关文章:

  • flask网站开发视频深圳新闻最新事件
  • 如何建设一个生活服务网站百度排名优化软件
  • 企业建设网站的案例拉新人拿奖励的app
  • 服装网站建设的需求百度风云榜
  • 手机网站建设的价格谷歌浏览器官方正版下载
  • 重庆做网站的cba最新消息
  • wordpress会员推广系统网站首页排名seo搜索优化
  • 电子商务网站建设总结陕西网络营销优化公司
  • 阿里云网站建设模板怀柔网站整站优化公司
  • 头条滚动 wordpress武汉seo工厂
  • 网站首页被k 做跳转市场营销计划
  • 打开一个网站搜索页面跳转js百度网址大全旧版
  • 苏州做网站公司精选苏州聚尚网络搜索热词排名
  • 自己做报名网站长春网长春关键词排名站设计
  • 深圳网站建设排名合肥百度seo代理
  • 党政门户网站建设工作情况win7系统优化软件
  • 外包工是临时工吗seo服务商
  • wamp可以做视频网站吗短链接生成
  • 织梦网站版本宁波seo网络优化公司
  • 网站色彩搭配技巧国际新闻界期刊
  • 模板下载免费网站南宁seo计费管理
  • 网站详情一般是什么公司做seo的概念
  • 简洁的一家设计公司网站作品展示网页模板html5+css3全站下载免费网页制作网站
  • 品牌设计公司网站源码佛山网站建设正规公司
  • 朝阳网站建设培训搜索引擎网站推广如何优化
  • 做软件挣钱的网站教育培训机构前十名
  • 大岭山网站仿做被忽悠去做网销了
  • iis 设置网站不能访问百度站长工具添加不了站点
  • 专业做鞋子网站百度推广助手电脑版
  • 亚马逊跨境电商平台介绍搜索seo优化