【LeetCode】Day189-区间子数组个数
创始人
2024-02-12 01:44:12

题目

795. 区间子数组个数【中等】

题解

注意题目中说的是 子数组的最大值在 [left,right] 区间就行,翻译一下就是子数组中不能有超过right的元素,且至少有一个元素在 [left,right] 区间内

一次遍历

维护两个变量
last1:目标区间元素最后一次出现的位置
last2:非目标区间元素最后一次出现的位置
如果last1存在,则结果+=last1-last2

class Solution {public int numSubarrayBoundedMax(int[] nums, int left, int right) {int n=nums.length,res=0,last1=-1,last2=-1;for(int i=0;iif(nums[i]>=left&&nums[i]<=right)last1=i;//目标区间元素最后一次出现的位置else if(nums[i]>right){last2=i;//非目标区间元素最后一次出现的位置last1=-1;//标记此轮跳过res更新}if(last1!=-1)res+=last1-last2;}return res;}
}

时间复杂度:O(n)O(n)O(n)

空间复杂度:O(1)O(1)O(1)

计数

[…,right]-[…,left-1],两个区间元素个数相减,得到[left,right]区间的元素个数

class Solution {public int numSubarrayBoundedMax(int[] nums, int left, int right) {return count(nums,right)-count(nums,left-1);}public int count(int[] nums,int lower){int cur=0,res=0;for(int x:nums){cur=x<=lower?cur+1:0;//i左侧有多少个连续的元素<=lowerres+=cur;}return res;}
}

时间复杂度:O(n)O(n)O(n)

空间复杂度:O(1)O(1)O(1)

相关内容

热门资讯

重大通报作弊器!乐乐上海麻将a... 重大通报作弊器!乐乐上海麻将ai智能透视辅助插件,乐乐上海麻将本来存在有外挂(有辅助挂方略)1、很好...
分享给玩家透视挂!家乡大贰ai... 分享给玩家透视挂!家乡大贰ai智能透视辅助工具,家乡大贰其实真的有外挂(有辅助挂细节)家乡大贰破解侠...
科普攻略开挂!英豪娱乐城ai智... 科普攻略开挂!英豪娱乐城ai智能透视辅助教程,英豪娱乐城好像真的是有外挂(有辅助挂头条)1、英豪娱乐...
总算了解辅助器!和悦游戏ai智... 总算了解辅助器!和悦游戏ai智能透视辅助教程,和悦游戏确实是真的有外挂(竟然有辅助挂)暗藏猫腻,小编...
揭秘关于辅助器!九九麻将ai智... 揭秘关于辅助器!九九麻将ai智能透视辅助技巧,九九麻将一贯是有外挂(有辅助挂方略)1、用户打开应用后...