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

单调队列与栈

一.题

1.

思路: 构建小压大的单调递减栈,对于每个栈的元素都进行处理并加到结果上

class Solution {
public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top = 0;long long ans = 0;for(int i =0;i<arr.size();i++){while(top&&arr[i]<arr[stk[top-1]]){int cur = stk[--top];int l = top==0?-1:stk[top-1];ans = (ans+(long long)(cur-l)*(i-cur)*arr[cur])%(1000000007);}stk[top++] = i;}while(top){int cur = stk[--top];int l = top==0?-1:stk[top-1];ans = (ans+(long long)(cur-l)*(arr.size()-cur)*arr[cur])%(1000000007);}return ans;}
};

 2.

思路: 以每排都为一次底,然后压缩和第一题类似

#include <vector>
#include <string>
#include <algorithm>
#include <climits>using namespace std;class Solution {
public:int maximalRectangle(vector<string>& matrix) {if (matrix.empty() || matrix[0].empty()) return 0;int rows = matrix.size();int cols = matrix[0].size();vector<int> height(cols, 0); int ans = 0; for (int i = 0; i < rows; i++) {for (int j = 0; j < cols; j++) {if (matrix[i][j] == '1') height[j] += 1;  else height[j] = 0; }int stk[cols + 2], top = 0;stk[top++] = -1; for (int j = 0; j <= cols; j++) {while (top > 1 && (j == cols || height[stk[top - 1]] >= height[j])) {int curHeight = height[stk[--top]]; int width = j - stk[top - 1] - 1; int area = curHeight * width; ans = max(ans, area); }stk[top++] = j; }}return ans;}
};

3.

思路:用单调栈收集每个可能是低点的位置,使得栈严格小压大,单调递增,然后方向遍历全部的元素与栈中元素比较来找距离最远的坡

class Solution {
public:int maxWidthRamp(vector<int>& nums) {int stk[50050],top = 0;int ans = 0;stk[top++] = 0;for(int i =0;i<nums.size();i++){if(nums[i]<nums[stk[top-1]])stk[top++] = i;}for(int i = nums.size()-1;i>=0;i--){while(top&&nums[i]>=nums[stk[top-1]]){int cur = stk[--top];int temp_l = i - cur;ans = max(ans,temp_l);}}return ans;}
};

4.

思路:还是利用单调栈的特性,大压小,开头从栈底部开始,同时用一个数组标记是不是在栈中

#include <string>
#include <vector>using namespace std;class Solution {
public:string removeDuplicateLetters(string s) {int counts[26] = {0}; bool inStack[26] = {false}; char stk[10005];int top = 0; for (char ch : s) counts[ch - 'a']++;for (char ch : s) {if (inStack[ch - 'a']) {counts[ch - 'a']--;continue;}while (top > 0 && stk[top - 1] > ch && counts[stk[top - 1] - 'a'] > 0) {inStack[stk[top - 1] - 'a'] = false; top--; }stk[top++] = ch;inStack[ch - 'a'] = true; counts[ch - 'a']--; }string result;for (int i = 0; i < top; i++) result += stk[i];return result;}
};

 5.

思路:因为,鱼是吃右边的更小的鱼,所以方向遍历后往前,因为小不能吃大,为小压大,在用个cnt数组统计每条鱼进行的场数,用max来求最大值

#include <iostream>
#include <vector>
#include <stack>
using namespace std;int main() {int n,ans = -1;cin>>n;vector<int> fish(n);for(int i = 0; i < n; i++)cin>>fish[i];vector<int> cnt(n,0);stack<int> stk;for(int i = n-1; i >= 0; i--){while(!stk.empty() && fish[i]>fish[stk.top()]){int cur = stk.top();stk.pop();cnt[i] = max(cnt[i]+1,cnt[cur]);  }stk.push(i);ans = max(ans,cnt[i]);}cout<<ans;return 0;
}

 6.算法竞赛进阶指南

思路:模拟过程即可

#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
#include<queue>using namespace std;int main() {int cnt[14];int time[14];vector<vector<char>>tt(14, vector<char>(5, 0));for (int i = 1; i <= 13; i++){cnt[i] = 4; time[i] = 0;for (int j = 1; j <= 4; j++)cin >> tt[i][j];}cnt[13] = 1;while (cnt[13] <= 4) {char temp = tt[13][cnt[13]++];if (temp == 'K') continue;while (temp != 'K') {int num = 0;if (temp == 'A')num = 1;else if (temp == '0')num = 10;else if (temp == 'J')num = 11;else if (temp == 'Q')num = 12;else num = temp - '0';time[num]++;if (cnt[num] == 0)break;temp = tt[num][cnt[num]--];}}int ans = 0;for (int i = 1; i <= 12; i++) {if (time[i] == 4)ans++;}cout << ans;return 0;
}

 

相关文章:

单调队列与栈

一.题 1. 思路&#xff1a; 构建小压大的单调递减栈&#xff0c;对于每个栈的元素都进行处理并加到结果上 class Solution { public:int sumSubarrayMins(vector<int>& arr) {int stk[10000000],top 0;long long ans 0;for(int i 0;i<arr.size();i){while(top…...

Matlab 多项式曲线拟合(三维)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于高维空间曲线的拟合,参数化是一种非常好的方式,可以让我们很容易得到我们想要的目标曲线。 假设给定一组数据点 ( u i ​ , x i ​ ) 、 ( u i ​...

机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确

在大多数情况下&#xff0c;从英语翻译成日语会比从中文翻译成日语更准确&#xff0c;原因如下&#xff1a; 1. 语言结构的相似性 英语和日语的句子结构更接近&#xff0c;特别是在语法、从句使用、定语位置等方面。例如&#xff0c;日语和英语都使用 SVO 结构&#xff08;主…...

MAC 系统关屏幕后电量消耗极快 Wake Requests

日志为 Wake Requests [*processdasd requestSleepService…info"com.apple.alarm.user-invisible-com.apple.calaccessd… 本人有效方法为&#xff1a; sudo pmset -a hibernatemode 25 sudo pmset -a standby 0 sudo pmset -a autopoweroff 0 会导致hibernatemode 25是…...

golangAPI调用deepseek

目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…...

提供可传递的易受攻击的依赖项

问题如图所示&#xff1a; 原因&#xff1a;okhttp3.version 3.14.9 版本存在部分漏洞&#xff0c;在 maven 仓库是可以看到的 maven 地址&#xff1a; maven 下图中 Vulnerabilities 即为漏洞 处理&#xff1a;换一个无漏洞的版本即可...

2.14学习记录

Web flag直接读取不就行了&#xff1f; 代码审计&#xff1a; <?php highlight_file(index.php); # 我把flag藏在一个secret文件夹里面了&#xff0c;所以要学会遍历啊~ error_reporting(0); $J1ng $_POST[J]; $Hong $_POST[H]; $Keng $_GET[K]; $Wang $_GET[W]; $d…...

xpath定位--鼠标悬停显示的按钮

UI自动化定位界面元素的过程中&#xff0c;会遇到鼠标悬停才会显示的按钮&#xff0c;鼠标移开就不显示了&#xff0c;无法通过点击它直接定位到元素位置 搜索到这篇文档&#xff0c;办法很好用&#xff0c;特此记录下&#xff1a;chrome调试鼠标悬停后出现的元素_控制台元素调…...

鸿蒙Harmony打包脚本使用整理

最近整理鸿蒙打包相关事宜&#xff0c;遇到很多文档描述不清晰的问题&#xff0c;好在都通过鸿蒙团队的技术支持解决掉了。这里整理一下。 command-line-tools的命令官网基本都有&#xff0c;这里整理几个常用的&#xff0c;还有就是遇到的问题。 hvigorw位置&#xff1a;/comm…...

【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;专__注&#x1f448;&#xff1a;专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…...

在Autonomous DB中创建训练数据集

在Autonomous DB中创建训练数据集 概述背景步骤解析1. 定义公司术语表2. 使用SQL将数据转换为JSON格式3. 使用SPool命令将SQL查询结果输出为JSON文件4. 查看生成的JSON文件 结果示例结论 概述 在机器学习中&#xff0c;构建高质量的训练数据集是模型成功的关键&#xff0c;尤其…...

Adapting to Length Shift: FlexiLength Network for Trajectory Prediction

概要 轨迹预测在各种应用中发挥着重要作用&#xff0c;包括自动驾驶、机器人技术和场景理解。现有方法通常采用标准化的输入时长&#xff0c;集中于开发紧凑神经网络&#xff0c;以提高在公共数据集上的预测精度。然而&#xff0c;当这些模型在不同观测长度下进行评估时&#…...

张量循环运算:内存溢出原因及解决

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 内存溢出解决方法致谢 内存溢出 使用AlexNet遍历大量图像进行指标运算&#xff08;LP…...

【Qt】:概述(下载安装、认识 QT Creator)

&#x1f308; 个人主页&#xff1a;Zfox_ &#x1f525; 系列专栏&#xff1a;Qt 目录 一&#xff1a;&#x1f525; 介绍 &#x1f98b; 什么是 QT&#x1f98b; QT 发展史&#x1f98b; Qt版本&#x1f98b; QT 优点 一&#xff1a;&#x1f525; 搭建Qt开发环境 &#x1f9…...

11、《Web开发性能优化:静态资源处理与缓存控制深度解析》

Web开发性能优化&#xff1a;静态资源处理与缓存控制深度解析 一、性能优化的核心战场&#xff1a;静态资源处理 现代Web应用静态资源体积占比普遍超过70%&#xff0c;以典型Vue项目为例&#xff1a; dist/ ├─ css/ # 38% 体积 ├─ js/ # 45% 体积 └─ img…...

【Linux】多线程 -> 从线程概念到线程控制

线程概念 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1a;线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行&#xff0c;本质是在进程地址空间内运行。在Linux系统中&#xff0c;在CPU眼…...

用什么办法能实现ubuntu里面运行的自己开发的python程序能自动升级。

要实现Ubuntu中自己开发的Python程序自动升级&#xff0c;可以通过以下几种方式&#xff1a; 1. 使用 Git 仓库 定时任务 如果你的Python程序托管在Git仓库中&#xff0c;可以通过定时拉取最新代码来实现自动升级。 步骤&#xff1a; 确保Python程序在Git仓库中。在Ubuntu上…...

java处理pgsql的text[]类型数据问题

背景 公司要求使用磐维数据库&#xff0c;于是去了解了这个是基于PostgreSQL构建的&#xff0c;在使用时有场景一条图片数据中可以投放到不同的页面&#xff0c;由于简化设计就放在数组中&#xff0c;于是使用了text[]类型存储&#xff1b;表结构 #这是一个简化版表结构&…...

LeetCode 热门100题-字母异位词分组

2.字母异位词分组 题目描述&#xff1a; 给你一个字符串数组&#xff0c;请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan&q…...

耐张线夹压接图片智能识别

目录 一、图片压接部位定位1、图像准备2、人工标注3、训练4、推理5、UI界面 压接状态智能识别 一、图片压接部位定位 &#xff0c;往往X射线照片是一个大图&#xff0c;进行图片压接部位定位目的是先找到需识别的部位&#xff0c;再进行识别时可排除其他图像部位的干扰&#x…...

流式深度强化学习突破“流式壁垒”:“意图更新”算法性能比肩SAC,计算量仅1/140

一脚油门&#xff0c;开出了多大的坑传统梯度学习的步长规定参数每次移动多大&#xff0c;但对函数输出改变多少缺乏控制。就像驾车学习停车入库&#xff0c;教练规定每次「踩油门0.1秒」&#xff0c;但不同路况下车子前进距离差异大&#xff0c;有时差一厘米入库&#xff0c;有…...

Rust Cargo工作空间:项目组织与依赖管理

Rust Cargo工作空间&#xff1a;项目组织与依赖管理 引言 Cargo是Rust的官方构建工具和包管理器。工作空间(Workspace)是Cargo的重要特性&#xff0c;允许将多个相关的crate组织在一起&#xff0c;共享依赖和配置。 本文将深入探讨Cargo工作空间的使用方法、最佳实践和高级配置…...

打车VS地铁VS共享单车?成本/时间/可靠性三维测评(实测17次,误差±12秒)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;奇点智能技术大会公共交通路线 前往奇点智能技术大会主会场&#xff08;上海张江科学会堂&#xff09;的公共交通方案已全面优化&#xff0c;支持实时路径规划与多模态换乘。推荐使用「MetroBus步行」组…...

【微电网优化】基于改进自适应粒子群算法的孤岛微电网PID参数优化设计与Matlab仿真

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

战略洞察:没有退路就是胜利之路

目录 一、《没有退路就是胜利之路》核心知识点总结 1.1 华为文化发展历程的阶段性特征 1.2 华为核心价值观体系解析 1.3 华为文化的洋葱模型与落地机制 1.4 华为文化传承的系统化机制 二、战略思维维度的深度解析与启示 2.1 "没有退路就是胜利之路" 的战略哲学…...

从选型到调试:MCP2517FD与ATA6563收发器搭配实战避坑指南

从选型到调试&#xff1a;MCP2517FD与ATA6563收发器搭配实战避坑指南 在工业控制和车载电子系统中&#xff0c;CAN FD总线技术正逐步取代传统CAN总线&#xff0c;成为高速数据传输的新标准。作为硬件工程师&#xff0c;我们常常面临这样的挑战&#xff1a;如何在有限的项目周期…...

全面掌握Wand-Enhancer:零成本解锁WeMod Pro高级功能的实用攻略

全面掌握Wand-Enhancer&#xff1a;零成本解锁WeMod Pro高级功能的实用攻略 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 想免费体验WeMod Pro的所有高…...

别再忍受龟速下载了!实测国内15个Anaconda镜像站,教你一键换源(附测速工具)

告别卡顿&#xff01;国内Anaconda镜像站深度评测与智能换源实战指南 每次conda install等上半小时&#xff1f;看着进度条像蜗牛爬&#xff1f;作为Python开发者&#xff0c;包管理工具的下载速度直接决定了工作效率。上周帮团队调试一个数据分析项目时&#xff0c;有位同事的…...

QMCDecode:终极macOS QQ音乐加密格式免费转换解决方案

QMCDecode&#xff1a;终极macOS QQ音乐加密格式免费转换解决方案 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac&#xff0c;qmc0,qmc3转mp3, mflac,mflac0等转flac)&#xff0c;仅支持macOS&#xff0c;可自动识别到QQ音乐下载目录&#xff0c;默认转…...

AI提示词工程实战:结构化模板提升开发效率与代码质量

1. 项目概述&#xff1a;一个为开发者量身打造的AI提示词库如果你和我一样&#xff0c;每天都要和ChatGPT、Cursor、GitHub Copilot这些AI编程助手打交道&#xff0c;那你肯定也经历过这样的时刻&#xff1a;面对一个复杂的代码审查任务&#xff0c;或者一个棘手的性能优化问题…...