3759. 统计合格元素的数目
题目描述
给你一个长度为 n 的整数数组 nums 和一个整数 k。
如果数组 nums 中的某个元素满足以下条件,则称其为 合格元素:存在 至少 k 个元素 严格大于 它。
返回一个整数,表示数组 nums 中合格元素的总数。
示例 1:
输入: nums = [3,1,2], k = 1
输出: 2
解释:
元素 1 和 2 均有至少 k = 1 个元素大于它们。
没有元素比 3 更大。因此答案是 2。
示例 2:
输入: nums = [5,5,5], k = 2
输出: 0
解释:
由于所有元素都等于 5,没有任何元素比其他元素大。因此答案是 0。
提示:
1 <= n == nums.length <= 1051 <= nums[i] <= 1090 <= k < n
解法
方法一:排序
如果 \(k = 0\),那么数组中所有元素均为合格元素,直接返回数组长度即可。
否则,我们对数组进行排序,记排序后数组长度为 \(n\)。对于每个下标 \(i\) 满足 \(0 \\leq i < n - k\) 的元素,如果它严格小于下标为 \(n - k\) 的元素,则它是一个合格元素。我们只需统计这样的元素个数并返回即可。
时间复杂度 \(O(n \times \log n)\),空间复杂度 \(O(\log n)\)。其中 \(n\) 是数组 \(\textit{nums}\) 的长度。
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |