Continuous Intervals(线段树+单调栈)

本文介绍了一种使用线段树和单调栈解决寻找数组中连续区间的算法。通过等价条件,将问题转换为求解区间最大值、最小值和不同数字个数的关系,并动态维护这些值。利用单调栈处理区间更新,借助map存储数字出现位置辅助计算,最终累加所有满足条件的区间个数。
摘要由CSDN通过智能技术生成

Continuous Intervals

线段树好题呀!比赛的时候根本看不出来,赛后惊叹“学到了!”

题意:给定一个数组,求数组内有多少连续区间。“连续区间”的定义:将区间内数字按大小排序后,相邻元素差值不大于1,可以等于0。
思路:绝妙的思路!线段树+区间修改+区间最小值及最小值个数+单调栈

  1. 可以将“连续区间”的定义等价为:区间最大值 − - 区间最小值 + 1 +1 +1 − - 区间不同数字的个数 = 0 =0 =0;定义区间最大值为 m a x max max,区间最小值为 m i n min min,区间不同数字的个数为 c n t cnt cnt,则此表达式可写为 m a x − m i n + 1 − c n t = 0 max-min+1-cnt=0 maxmin
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值