力扣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;
      }
  };
相关推荐
NAGNIP12 分钟前
机器学习特征工程中的特征选择
算法·面试
l1t18 分钟前
DeepSeek辅助编写的利用位掩码填充唯一候选数方法求解数独SQL
数据库·sql·算法·postgresql
Z1Jxxx22 分钟前
反序数反序数
数据结构·c++·算法
副露のmagic23 分钟前
更弱智的算法学习 day25
python·学习·算法
求梦82023 分钟前
【力扣hot100题】移动零(1)
算法·leetcode·职场和发展
NAGNIP27 分钟前
机器学习中的数据预处理方法大全!
算法·面试
涛涛北京35 分钟前
Soft-Actor-Critic算法-连续环境
算法
vyuvyucd37 分钟前
C++排序算法全解析
java·数据结构·算法
胡萝卜不甜39 分钟前
算法宗门---迪杰斯特拉Dijkstra(最短路径算法)
算法
练习时长一年1 小时前
LeetCode热题100(爬楼梯)
算法·leetcode·职场和发展