LeetCode 2488. 统计中位数为 K 的子数组
创始人
2025-05-28 20:00:56

2488. 统计中位数为 K 的子数组

 

 

【前缀和 + 哈希】把小于k的当做-1,大于k的当做1,那么通过前缀和计算出的一段区间内得分为0或者1就说明符合要求。

class Solution {public int countSubarrays(int[] nums, int k) {int n = nums.length, idx = 0, ans = 0;int[] s = new int[n + 1];for (int i = 1; i <= n; i++) s[i] = s[i - 1] + (nums[i - 1] > k ? 1: (nums[i - 1] == k? 0: -1));Map map = new HashMap();map.put(0, 1);for (int i = 0; i < n; i++) {if (nums[i] == k) {idx = i + 1;break;}}for (int i = 1; i <= n; i++) {if (i < idx) map.put(s[i], map.getOrDefault(s[i], 0) + 1);else {ans += map.getOrDefault(s[i], 0) + map.getOrDefault(s[i] - 1, 0);}}return ans;}
}

 

 

 

相关内容

热门资讯

济南黄金期货领域标杆企业榜单:... 济南黄金期货领域标杆企业榜单:东吴期货实力** 在济南黄金期货市场中,东吴期货有限公司凭借其雄厚的资...
多家公募机构展望2026年投资... 中证报中证网讯(记者 魏昭宇)近日,中欧基金、中信保诚基金、嘉实基金、安联基金等多家公募机构发布了对...
四川一景区有猴子骨头裸露受伤,... 新京报记者 马骏 制作 王子轩 ▲新京报我们视频出品(ID:wevideo) 12月13日,四川彭州...