力扣1124.表现良好的最长时间段

力扣1124.表现良好的最长时间段

  • 哈希表存最小的下标

    • 当s[i] > 0 那么他到头可以构成一个合法时间段
    • 否则 找到之前的 s[i] - 1 的下标:
      • 因为连续的前缀和一定只相差1
      • 若想算更小的s[i] - 2,s[i] - 3...
      • 一定会先算到s[i] - 1
      • 那么这些更小数 必然在 s[i]−1 首次出现的位置的右边
cpp 复制代码
  class Solution {
  public:
      int longestWPI(vector<int>& hours) {
          int n = hours.size();
          vector<int> s(n+1);
          for(int i=0;i<n;i++)
          {
              s[i+1] = s[i];
              s[i+1] += hours[i] > 8 ? 1 : -1;
              cout<<s[i+1]<<endl;
          }
          
          unordered_map<int,int> cnt;
          int res=0;
          for(int i=0;i<=n;i++)
          {
              if(s[i] > 0) res = max(res,i);
              if(cnt.find(s[i] - 1) != cnt.end())
                  res = max(res,i - cnt[s[i] - 1]);
              if(cnt.find(s[i]) == cnt.end())
                  cnt[s[i]] = i;
          }
          return res;
      }
  };
相关推荐
洛水水18 小时前
【力扣100题】18.随机链表的复制
算法·leetcode·链表
南宫萧幕18 小时前
规则基 EMS 仿真实战:SOC 区间划分与 Simulink 闭环建模全解
算法·matlab·控制
爱滑雪的码农18 小时前
Java基础十七:数据结构
数据结构
多加点辣也没关系19 小时前
数据结构与算法|第二十三章:高级数据结构
数据结构·算法
孬甭_21 小时前
初识数据结构与算法
数据结构
hoiii18721 小时前
孤立森林 (Isolation Forest) 快速异常检测系统
算法
c++之路1 天前
适配器模式(Adapter Pattern)
java·算法·适配器模式
吴声子夜歌1 天前
Java——接口的细节
java·开发语言·算法
myheartgo-on1 天前
Java—方 法
java·开发语言·算法·青少年编程
宝贝儿好1 天前
【LLM】第三章:项目实操案例:智能输入法项目
人工智能·python·深度学习·算法·机器人