单调队列与栈
一.题
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. 思路: 构建小压大的单调递减栈,对于每个栈的元素都进行处理并加到结果上 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 ...
机器翻译同样的文本,是从英语翻译成日语更准确还是中文翻译成日语更准确
在大多数情况下,从英语翻译成日语会比从中文翻译成日语更准确,原因如下: 1. 语言结构的相似性 英语和日语的句子结构更接近,特别是在语法、从句使用、定语位置等方面。例如,日语和英语都使用 SVO 结构(主…...
MAC 系统关屏幕后电量消耗极快 Wake Requests
日志为 Wake Requests [*processdasd requestSleepService…info"com.apple.alarm.user-invisible-com.apple.calaccessd… 本人有效方法为: 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:…...

提供可传递的易受攻击的依赖项
问题如图所示: 原因:okhttp3.version 3.14.9 版本存在部分漏洞,在 maven 仓库是可以看到的 maven 地址: maven 下图中 Vulnerabilities 即为漏洞 处理:换一个无漏洞的版本即可...

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

xpath定位--鼠标悬停显示的按钮
UI自动化定位界面元素的过程中,会遇到鼠标悬停才会显示的按钮,鼠标移开就不显示了,无法通过点击它直接定位到元素位置 搜索到这篇文档,办法很好用,特此记录下:chrome调试鼠标悬停后出现的元素_控制台元素调…...
鸿蒙Harmony打包脚本使用整理
最近整理鸿蒙打包相关事宜,遇到很多文档描述不清晰的问题,好在都通过鸿蒙团队的技术支持解决掉了。这里整理一下。 command-line-tools的命令官网基本都有,这里整理几个常用的,还有就是遇到的问题。 hvigorw位置:/comm…...

【C语言】C语言 停车场管理系统的设计与实现(源码)【独一无二】
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。 系列文章目录 目录 系列文章目录一、设计要求二、设…...
在Autonomous DB中创建训练数据集
在Autonomous DB中创建训练数据集 概述背景步骤解析1. 定义公司术语表2. 使用SQL将数据转换为JSON格式3. 使用SPool命令将SQL查询结果输出为JSON文件4. 查看生成的JSON文件 结果示例结论 概述 在机器学习中,构建高质量的训练数据集是模型成功的关键,尤其…...

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

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

【Qt】:概述(下载安装、认识 QT Creator)
🌈 个人主页:Zfox_ 🔥 系列专栏:Qt 目录 一:🔥 介绍 🦋 什么是 QT🦋 QT 发展史🦋 Qt版本🦋 QT 优点 一:🔥 搭建Qt开发环境 ǹ…...
11、《Web开发性能优化:静态资源处理与缓存控制深度解析》
Web开发性能优化:静态资源处理与缓存控制深度解析 一、性能优化的核心战场:静态资源处理 现代Web应用静态资源体积占比普遍超过70%,以典型Vue项目为例: dist/ ├─ css/ # 38% 体积 ├─ js/ # 45% 体积 └─ img…...

【Linux】多线程 -> 从线程概念到线程控制
线程概念 在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。一切进程至少都有一个执行线程。线程在进程内部运行,本质是在进程地址空间内运行。在Linux系统中,在CPU眼…...
用什么办法能实现ubuntu里面运行的自己开发的python程序能自动升级。
要实现Ubuntu中自己开发的Python程序自动升级,可以通过以下几种方式: 1. 使用 Git 仓库 定时任务 如果你的Python程序托管在Git仓库中,可以通过定时拉取最新代码来实现自动升级。 步骤: 确保Python程序在Git仓库中。在Ubuntu上…...
java处理pgsql的text[]类型数据问题
背景 公司要求使用磐维数据库,于是去了解了这个是基于PostgreSQL构建的,在使用时有场景一条图片数据中可以投放到不同的页面,由于简化设计就放在数组中,于是使用了text[]类型存储;表结构 #这是一个简化版表结构&…...
LeetCode 热门100题-字母异位词分组
2.字母异位词分组 题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan&q…...
耐张线夹压接图片智能识别
目录 一、图片压接部位定位1、图像准备2、人工标注3、训练4、推理5、UI界面 压接状态智能识别 一、图片压接部位定位 ,往往X射线照片是一个大图,进行图片压接部位定位目的是先找到需识别的部位,再进行识别时可排除其他图像部位的干扰&#x…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

【Python】 -- 趣味代码 - 小恐龙游戏
文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...

什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...