给你一个整数数组 nums 和一个整数 k。
同时给你一个二维整数数组 queries,其中 queries[i] = [li, ri] 表示 子数组 nums[li..ri]。
对于每个查询,如果满足以下条件,则认为 子数组 nums[li..ri] 是 有效 的:
k 个 不同 的数字,且注意:子数组中一个数字的 频率 是指它在该子数组中出现的次数。
返回一个布尔数组 ans,其中如果 nums[li..ri] 是 有效 的,则 ans[i] 为 true,否则为 false。
子数组 是数组中一段连续的、非空 的元素序列。
示例 1:
输入: nums = [1,2,2,1], k = 2, queries = [[0,1],[0,3],[1,2]]
输出: [false,true,false]
解释:
i | [li, ri] | 子数组 | 不同数字 | 频率 | 有效性检查 |
|---|---|---|---|---|---|
| 0 | [0, 1] | [1, 2] | {1, 2} → 2 | {1: 1, 2: 1} | false:元素频率不是偶数。 |
| 1 | [0, 3] | [1, 2, 2, 1] | {1, 2} → 2 | {1: 2, 2: 2} | true:恰好 k = 2 个不同的元素,全部出现偶数次。 |
| 2 | [1, 2] | [2, 2] | {2} → 1 | {2: 2} | false:不同元素的数量少于 k = 2。 |
因此,ans = [false, true, false]。
示例 2:
输入: nums = [3,3,3], k = 1, queries = [[1,2],[0,2]]
输出: [true,false]
解释:
i | [li, ri] | 子数组 | 不同数字 | 频率 | 有效性检查 |
|---|---|---|---|---|---|
| 0 | [1, 2] | [3, 3] | {3} → 1 | {3: 2} | true:恰好 k = 1 个不同的元素,出现偶数次。 |
| 1 | [0, 2] | [3, 3, 3] | {3} → 1 | {3: 3} | false:3 出现的次数不是偶数。 |
因此,ans = [true, false]。
提示:
2 <= n == nums.length <= 1051 <= nums[i] <= 1051 <= k <= n1 <= queries.length <= 105queries[i] == [li, ri]0 <= li < ri <= n - 1