问题链接

LeetCode 795

题目解析

给定一个数组A,左右范围L、R。求子数组的数量,要求:子数组最大值在L、R之间。

解题思路

子数组必须连续,利用最大值R对数组进行分段,设定变量 left 记录每段开始位置(\(A[left] > R\),\(A[left+1] ≤ R\)),初始值为-1。

遍历数组,通过A[i]大小判断:

  • 若 A[i] 在L、R之间,则 ans+=(i-j);
  • 若 A[i] 大于R,则更改左界 left=i;
  • 关键在于处理小于L的情况,由于需要子数组的最大值在L、R之间,单纯的 A[i] 肯定不能算,需要知道最近合法的数字,即右界。设定变量 right 记录合法的数字的右界(\(L ≤ A[right] ≤ R\)),当然,在A[i]大于R时,左界left和右界right都设置为i。这种情况下,ans += (i-left)-(i-right)。

参考代码

class Solution {
public:int numSubarrayBoundedMax(vector<int>& A, int L, int R) {int len = A.size();int ans = 0;int left = -1;//左界int right = -1;//最近合法位置for(int i=0; i<len; i++) {if(A[i] > R) {left = i;right = i;}else if(A[i]<L) {ans += (i-left)-(i-right);}else {ans += (i-left);right = i;}}return ans;}
};

LeetCode All in One题解汇总(持续更新中...)

本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


转载于:https://www.cnblogs.com/AlvinZH/p/8527214.html

LeetCode 795. Number of Subarrays with Bounded Maximum相关推荐

  1. leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)

    题目 https://leetcode.com/problems/number-of-subarrays-with-bounded-maximum/ 题解 一看数据规模,这题只能 O(1) 乍一看,以 ...

  2. 【Leetcode 795】Number of Subarrays with Bounded Maximum

    难度:中等 题目描述 We are given an array A of positive integers, and two positive integers L and R (L <= ...

  3. LeetCode 191 Number of 1 Bits

    LeetCode 191 Number of 1 Bits 解法一(较为传统都解法):使用将n不断右移,并与1想&得到1的个数:(也有使用除法/2的,明显除法的运行效率要低于位移) 时间复杂度 ...

  4. LeetCode 200. Number of Islands--c++ dfs解法

    LeetCode 200. Number of Islands LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++,Pyt ...

  5. LeetCode Singer Number

    Python LeetCode Singer Number 题目说明 算法1 数学方法 算法2 异或运算 题目说明 给定一个列表,其中包含数对相同元素与一个单独元素,例如[2,2,1].[1,3,5, ...

  6. 区间子数组个数 - LeetCode 795 - 从左向右与从右向左查找

    一.问题描述 给你一个整数数组 nums 和 两个整数:left 及 right .找出 nums 中连续.非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个 ...

  7. [勇者闯LeetCode] 191. Number of 1 Bits

    [勇者闯LeetCode] 191. Number of 1 Bits Description Write a function that takes an unsigned integer and ...

  8. LeetCode 673. Number of Longest Increasing Subsequence--O(N log N )--Java,C++,Python解法

    题目地址:Number of Longest Increasing Subsequence - LeetCode 做这道题目前建议先做:Longest Increasing Subsequence - ...

  9. [LeetCode]Single Number II

    今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...

最新文章

  1. 腾讯和头条,构建类脑神经元网络的两条路线之争
  2. 基于词典的前缀扫描中文分词
  3. Docker源码分析(八):Docker Container网络(下)
  4. 筷子兄弟--11度青春系列电影之《老男孩》
  5. NIO和BIO如何影响应用程序的设计-API调用
  6. 手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........
  7. Flutter 学习汇总
  8. Andrew Ng(coursera)单变量线性回归(LINEAR REGRESSION WITH ONE VARIABLE)
  9. Unity UI框架详细理解--场景管理
  10. OneNote for windows10 鼠标点击没反应
  11. 《iOS防护02》破解ptrace防护
  12. iOS10新特性及开发者要注意什么
  13. 他用一生换一个资本帝国
  14. 小伙入职某互联网大厂的一天(1)
  15. 第六章 戚继光——孤独的将领 –2(稍微次要)
  16. 阿里云AI训练营第一天
  17. 生命不息,折腾不止——新的起点
  18. Unity ECS(四)ECS组成概念
  19. 摆脱令人抓狂的ESlint 语法检测配置说明
  20. 蓝牙对战的java_国际象棋-可蓝牙对战

热门文章

  1. VLAN配置命令列表
  2. c语言中removeDir的相反函数,C语言编程常见问题解答之常用函数的包括文件.doc
  3. 12款经典图片轮播jquery插件
  4. Hibernate Tools-代码生成
  5. Winform 三层架构小例子
  6. mysql带BETTEEN ADN 关键字的查询
  7. gin获取get参数
  8. Flutter Live 2018 Flutter 1.0 发布
  9. 利刃 MVVMLight 7:命令深入
  10. (十二)springmvc+mybatis+dubbo+zookeeper分布式架构 整合 - zookeeper注册中心安装