3833. 统计主导元素下标数
题目描述
给你一个长度为 n 的整数数组 nums。
当下标 i 满足以下条件时,该下标处的元素被称为 主导元素:nums[i] > average(nums[i + 1], nums[i + 2], ..., nums[n - 1])
你的任务是统计数组中 主导元素 的下标数。
平均值 是指一组数的总和除以该组数的个数得到的值。
注意:数组的 最右边元素 不算作 主导元素 。
示例 1:
输入: nums = [5,4,3]
输出: 2
解释:
- 在下标
i = 0处,值 5 是主导元素,因为5 > average(4, 3) = 3.5。 - 在下标
i = 1处,值 4 是主导元素,相对于子数组[3]。 - 下标
i = 2不是主导元素,因为它右侧没有元素。因此答案是 2。
示例 2:
输入: nums = [4,1,2]
输出: 1
解释:
- 在下标
i = 0处,值 4 是主导元素,相对于子数组[1, 2]。 - 在下标
i = 1处,值 1 不是主导元素。 - 下标
i = 2不是主导元素,因为它右侧没有元素。因此答案是 1。
提示:
1 <= nums.length <= 1001 <= nums[i] <= 100
解法
方法一:逆序遍历
我们可以从后向前遍历数组,维护一个后缀和 \(\text{suf}\),表示当前元素右侧所有元素的和。对于每个元素,判断其是否大于右侧元素的平均值 \(\frac{\text{suf}}{n - i - 1}\),如果是,则将答案加一。最后返回答案即可。
时间复杂度 \(O(n)\),其中 \(n\) 是数组 \(\text{nums}\) 的长度。空间复杂度 \(O(1)\)。
1 2 3 4 5 6 7 8 9 10 | |
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 15 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |
1 2 3 4 5 6 7 8 9 10 11 12 | |