力扣2444.统计定界子数组的数目

力扣2444.统计定界子数组的数目

  • 观察到不满足条件的数 可以作为天然的分割线

    • 因此在枚举右端点的过程中 预处理minK,maxK和分割线上一次出现的下标

    • res += min(min_i,max_i) - i0;

    • 但是因为可能在到下个区段时 min_i和max_i尚未更新 导致结果为负数

    • 所以要跟0再取一个max

    • res += max(min(min_i,max_i)-i0,0)

  • 方便计算

    • 初始化i0 = -1;
cpp 复制代码
  class Solution {
  public:
      long long countSubarrays(vector<int>& nums, int minK, int maxK) {
          long long res=0;
          int n = nums.size(),min_i = -1,max_i = -1,i0 = -1;
          for(int i=0;i<n;i++)
          {
              int x = nums[i];
              if(x == minK) min_i = i;
              if(x == maxK) max_i = i;
              if(x < minK || x > maxK) i0 = i;
              res += max(min(min_i,max_i)-i0,0);
          }
          return res;
      }
  };
相关推荐
菜鸡儿齐几秒前
leetcode-最大子数组和
数据结构·算法·leetcode
小妖6665 分钟前
js 实现插入排序算法(希尔排序算法)
java·算法·排序算法
星火开发设计6 分钟前
标准模板库 STL:C++ 的利器 —— 容器、算法、迭代器
java·开发语言·数据结构·c++·算法·html
blackicexs8 分钟前
第五周第一天
算法
MIngYaaa5209 分钟前
2026寒假牛客 2.13
算法
大梦南柯11 分钟前
第一次作业
算法
iAkuya13 分钟前
(leetcode)力扣100 71字符串解码(栈(两种)||递归)
windows·算法·leetcode
重生之后端学习18 分钟前
105. 从前序与中序遍历序列构造二叉树
java·数据结构·后端·算法·深度优先
样例过了就是过了18 分钟前
LeetCodere热题100 最小覆盖子串
数据结构·算法·leetcode
追随者永远是胜利者21 分钟前
(LeetCode-Hot100)10. 正则表达式匹配
java·算法·leetcode·go