力扣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;
      }
  };
相关推荐
专注VB编程开发20年17 小时前
CUDA实现随机切割算法,显卡多线程计算
算法·cuda
2301_7887705517 小时前
OJ模拟4
算法
NAGNIP18 小时前
一文搞懂CNN经典架构-AlexNet!
人工智能·算法
2401_8785302118 小时前
自定义内存布局控制
开发语言·c++·算法
专注VB编程开发20年18 小时前
PNG、GIF透明游戏角色人物输出一张图片技巧,宽度高度读取
算法
CoderCodingNo19 小时前
【CSP】CSP-J 2025真题 | 异或和 luogu-P14359 (相当于GESP六级水平)
算法
keep intensify19 小时前
打家劫舍3
算法·深度优先
历程里程碑19 小时前
Protobuf 环境搭建:Windows 与 Linux 系统安装教程
linux·运维·数据结构·windows·线性代数·算法·矩阵
keep intensify19 小时前
岛屿数量--
算法·深度优先
代码探秘者19 小时前
【算法】吃透18种Java 算法快速读写模板
数据结构·数据库·python·算法·spring