力扣1248.统计优美子数组

力扣1248.统计优美子数组

  • 同930.

哈希表法

  • 求前缀和

cpp 复制代码
  class Solution {
  public:
      int numberOfSubarrays(vector<int>& nums, int k) {
          int n = nums.size();
          unordered_map<int,int> cnt;
          int res=0,sum=0;
          for(int i=0,j=0;i<n;i++)
          {
              cnt[sum] ++;
              if(nums[i] & 1) sum ++;
              res += cnt[sum - k];
          }
          return res;
      }
  };

多指针法

  • 用两个左指针卡左边可取的区间范围

cpp 复制代码
  class Solution {
  public:
      int numberOfSubarrays(vector<int>& nums, int k) {
          int n = nums.size();
          int res=0,s1=0,s2=0;
          for(int i=0,j1=0,j2=0;i<n;i++)
          {
              int x = (nums[i] & 1);
              s1 += x;
              s2 += x;
              //s1 --> s1 < k
              while(j1 <= i && s1 >= k) s1 -= (nums[j1++] & 1);
              //s2 --> s2 == k
              while(j2 <= i && s2 > k) s2 -= (nums[j2++] & 1);
              //此时j1的位置比j2靠右
              res += j1 - j2;
          }
          return res;
      }
  };
相关推荐
Darkwanderor1 小时前
什么数据量适合用什么算法
c++·算法
zc.ovo2 小时前
河北师范大学2026校赛题解(A,E,I)
c++·算法
py有趣2 小时前
力扣热门100题之环形链表
算法·leetcode·链表
py有趣2 小时前
力扣热门100题之回文链表
算法·leetcode·链表
Kk.08023 小时前
数据结构|链表 刷题
数据结构·链表
月落归舟4 小时前
帮你从算法的角度来认识二叉树---(二)
算法·二叉树
清华都得不到的好学生5 小时前
数据结构->1.稀疏数组,2.数组队列(没有取模),3.环形队列
java·开发语言·数据结构
SilentSlot5 小时前
【数据结构】Hash
数据结构·算法·哈希算法
是娇娇公主~6 小时前
Lambda表达式详解
数据结构·c++