LeetCode 795. Number of Subarrays with Bounded Maximum
问题链接
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相关推荐
- leetcode 795. Number of Subarrays with Bounded Maximum | 795. 区间子数组个数(Java)
题目 https://leetcode.com/problems/number-of-subarrays-with-bounded-maximum/ 题解 一看数据规模,这题只能 O(1) 乍一看,以 ...
- 【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 <= ...
- LeetCode 191 Number of 1 Bits
LeetCode 191 Number of 1 Bits 解法一(较为传统都解法):使用将n不断右移,并与1想&得到1的个数:(也有使用除法/2的,明显除法的运行效率要低于位移) 时间复杂度 ...
- LeetCode 200. Number of Islands--c++ dfs解法
LeetCode 200. Number of Islands LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++,Pyt ...
- LeetCode Singer Number
Python LeetCode Singer Number 题目说明 算法1 数学方法 算法2 异或运算 题目说明 给定一个列表,其中包含数对相同元素与一个单独元素,例如[2,2,1].[1,3,5, ...
- 区间子数组个数 - LeetCode 795 - 从左向右与从右向左查找
一.问题描述 给你一个整数数组 nums 和 两个整数:left 及 right .找出 nums 中连续.非空且其中最大元素在范围 [left, right] 内的子数组,并返回满足条件的子数组的个 ...
- [勇者闯LeetCode] 191. Number of 1 Bits
[勇者闯LeetCode] 191. Number of 1 Bits Description Write a function that takes an unsigned integer and ...
- LeetCode 673. Number of Longest Increasing Subsequence--O(N log N )--Java,C++,Python解法
题目地址:Number of Longest Increasing Subsequence - LeetCode 做这道题目前建议先做:Longest Increasing Subsequence - ...
- [LeetCode]Single Number II
今天室友推荐了一道LeetCode上面的练习题Single Number II,题目大概的意思是有一个整形的数组,里面只有一个数是出现一次的,其他的数都出现了三次,然后让把这个数找出来. 第一眼看到这 ...
最新文章
- 腾讯和头条,构建类脑神经元网络的两条路线之争
- 基于词典的前缀扫描中文分词
- Docker源码分析(八):Docker Container网络(下)
- 筷子兄弟--11度青春系列电影之《老男孩》
- NIO和BIO如何影响应用程序的设计-API调用
- 手把手教出欧拉!数学界最伟大的老师惨遭全网歪曲抹黑,奇葩说陈铭一句话揭露真相.........
- Flutter 学习汇总
- Andrew Ng(coursera)单变量线性回归(LINEAR REGRESSION WITH ONE VARIABLE)
- Unity UI框架详细理解--场景管理
- OneNote for windows10 鼠标点击没反应
- 《iOS防护02》破解ptrace防护
- iOS10新特性及开发者要注意什么
- 他用一生换一个资本帝国
- 小伙入职某互联网大厂的一天(1)
- 第六章 戚继光——孤独的将领 –2(稍微次要)
- 阿里云AI训练营第一天
- 生命不息,折腾不止——新的起点
- Unity ECS(四)ECS组成概念
- 摆脱令人抓狂的ESlint 语法检测配置说明
- 蓝牙对战的java_国际象棋-可蓝牙对战