力扣2080.区间内查询数字的频率

力扣2080.区间内查询数字的频率

  • 在下标上做二分

    • 把所有下标存入哈希表
    • 在left,right的范围内做二分求个数
cpp 复制代码
  class RangeFreqQuery {
      unordered_map<int, vector<int>> pos;
  public:
      RangeFreqQuery(vector<int>& arr) {
          for(int i=0;i<arr.size();i++)
          {
              pos[arr[i]].push_back(i);
          }
  
      }
      
      int query(int left, int right, int value) {
          auto it = pos.find(value);
          if(it == pos.end()) return 0;
          auto &a = it->second;
          return ranges::upper_bound(a,right) - ranges::lower_bound(a,left);
      }
  };
相关推荐
半个落月2 小时前
从递归到快速排序:用 JavaScript 把分治思想讲明白
javascript·算法·面试
小月土星3 小时前
JavaScript 快速排序:从 pivot、双指针到分治思想
javascript·算法·面试
小月土星3 小时前
JavaScript 递归入门:从 1 到 n 求和,再到数组扁平化
javascript·算法·面试
To_OC18 小时前
LC 1 两数之和:面试第一道必考题,暴力解法直接被面试官 pass
javascript·算法·leetcode
鱼鱼不愚与1 天前
《原来如此 | 第01期:为什么导航软件能预测红绿灯倒计时?》
算法
复杂网络1 天前
论最小 Agent 计算机的形态
算法
kisshyshy2 天前
🍦 雪糕、食堂、火车厢:三幅漫画吃透栈、队列与链表
javascript·算法
猿人谷2 天前
不只是 CPU 阈值:STAR 如何用 GAT + Transformer 做容器级自动扩缩容?
人工智能·算法
复杂网络2 天前
Stable Diffusion 视觉大模型微调技术深度调研
算法