力扣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;
      }
  };
相关推荐
江汉似年7 分钟前
强化学习中的 On-policy 与 Off-policy 全面解析
人工智能·深度学习·算法·rl
code bean17 分钟前
【LangChain 】 自定义解析器实战指南:从原理到 10 个业务场景落地
算法·langchain
念恒1230634 分钟前
基础IO(一切皆文件)
linux·c语言·c++·算法
d111111111d43 分钟前
MQTT+STM32+云平台+AT命令的编写
服务器·笔记·stm32·单片机·嵌入式硬件·算法
铁皮哥1 小时前
【力扣题解】LeetCode 25. K 个一组翻转链表
java·数据结构·windows·python·算法·leetcode·链表
Purple Coder2 小时前
面试-第二篇方法篇
面试·职场和发展
洛水水2 小时前
【力扣100题】29. 对称二叉树
算法·leetcode·职场和发展
大熊背2 小时前
近期遇到的一些问题总结(四)
算法·拍照·白平衡·isp pipeline
吴声子夜歌2 小时前
Java——Arrays
java·算法·排序算法
Purple Coder2 小时前
面试-第一篇心态篇
面试·职场和发展