907.子数组的最小值之和

单调栈 + 贡献法

  • 每个子数组的最小值的和,即对于每个元素,包含该元素的所有子数组的个数与该元素值的乘积即为所求值
  • 每个元素贡献的次数:以该元素为最小值的所有子数组的个数
  • 区间法求符合条件的包含某元素的子数组个数:左右边界均为最靠近该元素的并且小于(等于)该元素的元素所处的位置
  • 左右边界:leftBound, rightBound, 子数组个数:(i - leftBound) * (rightBound - i)
  • (1) 使用枚举查找最靠近该元素的并且小于(等于)该元素的元素所处的位置,超时。。。
  • (2) 使用单调栈,栈中保存下标,对应的元素值由小到大,以当前元素为最大值,pop掉栈中比当前元素大的值的下标,栈顶即为所要位置(边界)
class Solution {
public:int sumSubarrayMins(vector<int>& arr) {stack<int> s;int n = arr.size();vector<int> leftBound(n, -1);vector<int> rightBound(n, n);for(int i = 0; i < n; i++){while(s.size() && arr[i] <= arr[s.top()])s.pop();leftBound[i] = s.empty() ? -1 : s.top();s.push(i);}s = {};for(int i = n - 1; i >= 0; i--){while(s.size() && arr[i] < arr[s.top()])s.pop();rightBound[i] = s.empty() ? n : s.top();s.push(i);}long long ret = 0, mod = 1e9 + 7;for(int i = 0; i < n; i++){ret = ( ret + (long long)arr[i] * (i - leftBound[i]) * (rightBound[i] - i) ) % mod; }return ret;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/175599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vatee万腾的数字探险:Vatee科技创新的未知征程

在科技风潮的巅峰&#xff0c;Vatee万腾如一艘科技探险的航船&#xff0c;勇敢地驶向未知的数字化征程。 Vatee万腾在数字探险的过程中展现出征服未知领域的坚定决心。他们不满足于现状&#xff0c;而是积极地寻找和探索那些尚未被揭示的数字化领域。这种决心使得Vatee能够在科…

量子计算软件平台

目录 1.量子语言 2.量子软件开发工具 3.量子云计算平台 1.量子语言 量子语言是一种基于量子计算机的语言&#xff0c;用于描述和实现量子算法。与经典计算机语言不同&#xff0c;量子语言需要考虑量子力学的特殊规则和算法的量子化。其中&#xff0c;最常用的量子语言是量子程…

Redis部署脚本(完成-第一版)

主要包含redis的一键部署脚本和redis启动脚本文件 当前可以完成一键部署&#xff0c;还需改进语法 install.sh #!/bin/bash systemctl stop firewalld systemctl disable firewalld #!/bin/bash if ! command -v yum &> /dev/null; then echo -e "\e[31m yum…

基于51单片机的超声波测距系统【程序+proteus仿真+参考论文+原理图+PCB等16个文件夹资料】

一、项目功能简介 整个设计系统由STC89C52单片机LCD1602显示模块声光报警模块存储模块超声波模块按键模块组成。 具体功能&#xff1a; 1、超声波测量距离&#xff0c;显示在LCD1602。 2、存储模块可以存储超声波报警值。 3、通过按键可设置报警值大小。 4、超声波报警距…

ViLT 论文精读【论文精读】

ViLT 论文精读【论文精读】_哔哩哔哩_bilibili 目录 ViLT 论文精读【论文精读】_哔哩哔哩_bilibili 1 地位 2 ViLT做了什么能让它成为这种里程碑式的工作&#xff1f; 3 ViLT到底把模型简化到了什么程度&#xff1f;到底能加速到什么程度&#xff1f; 2.1 过去的方法是怎…

浏览器如何读取本地Excel表格

浏览器可以读取Excel表格数据吗&#xff1f; 答案是否定的&#xff0c;目前主流浏览器都无法打开本地Excel文档。 答案也是肯定的&#xff0c;这就来看看具体实现方法&#xff01;&#xff01;&#xff01; 首先准备一个Excel表格文件 保存在D:\\temp\测试表.xls…

python计算概率分布

目录 1、泊松分布 2、卡方分布 3、正态分布 4、t分布 5、F分布 1、泊松分布 泊松分布是一种离散概率分布&#xff0c;描述了在固定时间或空间范围内&#xff0c;某个事件发生的次数的概率分布。该分布以法国数学家西蒙德尼泊松的名字命名&#xff0c;他在19世纪早期对这种…

2023_Spark_实验二十一:Zookeeper单机安装与配置

zookeeper单机安装与配置一、zookeeper的安装 1.上传zookeeper-3.4.5.tar.gz到/tools目录下 2.解压安装zookeeper到/training中 tar -zvcf zookeeper-3.4.5.tar.gz -C /opt/soft_installed/zookeeper-3.4.53.配置环境变量 vim /home/lh/.bashrc# 添加内容如下 export ZK_HOME…

六、Lua 运算符

文章目录 一、Lua 运算符&#xff08;一&#xff09;算术运算符&#xff08;二&#xff09;关系运算符&#xff08;三&#xff09;逻辑运算符&#xff08;四&#xff09;其他运算符 二、运算符优先级 一、Lua 运算符 运算符是一个特殊的符号&#xff0c;用于告诉解释器执行特定…

小航助学题库蓝桥杯题库stem选拔赛(21年3月)(含题库教师学生账号)

需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSDN博客 需要在线模拟训练的题库账号请点击 小航助学编程在线模拟试卷系统&#xff08;含题库答题软件账号&#xff09;_程序猿下山的博客-CSD…

【系统移植】 移植主线U-Boot(v2024.01-rc3)到RK3399

一、编译环境 PC 机用的是 Ubuntu 18.04,执行以下命令安装必要工具: sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakero…

Ant Design布局:Flex, Grid, Layout

文章目录 FlexGridLayout React初步antd初步 任何UI工具&#xff0c;布局都是设计过程中必不可少的一环&#xff0c;前端更是如此。但网页和桌面应用还有区别&#xff0c;正常的网页&#xff0c;无论在手机还是PC上&#xff0c;基本都是自上而下排布的信息流&#xff0c;这种浏…

【JavaScript】封装自己的JavaScript公共工具函数,并上传到npm中 进行下载

js公共方法封装方式都有哪些 全局函数 function greet(name) {console.log("Hello, " name "!"); }greet("Alice"); // 调用全局函数对象字面量 var utils {add: function(a, b) {return a b;},subtract: function(a, b) {return a - b;}…

python爬虫进阶篇(异步)

学习完前面的基础知识后&#xff0c;我们会发现这些爬虫的效率实在是太低了。那么我们需要学习一些新的爬虫方式来进行信息的获取。 异步 使用python3.7后的版本中的异步进行爬取&#xff0c;多线程虽然快&#xff0c;但是异步才是爬虫真爱。 基本概念讲解 1.什么是异步&…

智能优化算法应用:基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于郊狼算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.郊狼算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

第13周 预习、实验与作业:Java网络编程

目录 1 课前问题列表 1.编写一个网络程序&#xff0c;为了与其他网络程序通信&#xff0c;至少要知道对方的什么信息&#xff1f; 2.TCP与UDP协议有什么不同的呢&#xff1f;什么时候该选择哪种协议&#xff1f;HTTP使用的是TCP还是UDP&#xff1f;不重要的短信息传送之类的功能…

销售漏斗是什么?

销售漏斗是一个重要的销售管理工具&#xff0c;它可以帮助销售人员更好地管理和跟踪潜在客户。销售漏斗模型通常被广泛应用于B2B销售中&#xff0c;它可以将销售过程细分为多个阶段&#xff0c;例如潜在客户、初步沟通、方案报价、谈判和签约等。 销售漏斗有以下作用&#xff…

java继承和多态之接口

Java 中的继承和多态是非常重要的概念&#xff0c;它们是 Java 面向对象编程的核心特性。在 Java 中&#xff0c;继承是指一个类&#xff08;子类&#xff09;可以继承另一个类&#xff08;父类&#xff09;的属性和方法。多态是指一个接口或类的多种实现方式&#xff0c;它允许…

静态方法和属性的经典使用-单例设计模式

单例设计模式 一、设计模式二、单例模式1、饿汉式2、懒汉式3、区别 单例设计模式是静态方法和属性的经典使用。 一、设计模式 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱&#xff0c;不同的棋局&…

基于C#实现梳排序

为什么取名为梳&#xff0c;可能每个梳都有自己的 gap 吧&#xff0c;大梳子 gap 大一点&#xff0c;小梳子 gap 小一点。上一篇我们看到鸡尾酒排序是在冒泡排序上做了一些优化&#xff0c;将单向的比较变成了双向&#xff0c;同样这里的梳排序也是在冒泡排序上做了一些优化。 …