3422:将子数组元素变为相等所需的最小操作数(★)
目录
题目
给定一个整数数组 nums 和一个整数 k。你可以进行任意次以下操作:
- 给
nums的任何元素增加或减少 1。
返回确保 至少 有一个大小为 k 的 nums 中的 子数组 的所有元素都相等的所需的 最小 操作数。
示例 1:
输入:nums = [4,-3,2,1,-4,6], k = 3
输出:5
解释:
- 使用 4 次操作来给
nums[1]增加 4。结果数组为[4, 1, 2, 1, -4, 6]。 - 使用 1 次操作来给
nums[2]减少 1。结果数组为[4, 1, 1, 1, -4, 6]。 - 现在数组包含一个大小为
k = 3的子数组[1, 1, 1],所有元素都想等。因此,答案为 5。
示例 2:
输入:nums = [-2,-2,3,1,4], k = 2
输出:0
解释:
-
大小为
k = 2的子数组[-2, -2]已经包含了所有相等的元素,所以不需要操作。因此答案为 0。
提示:
2 <= nums.length <= 105-106 <= nums[i] <= 1062 <= k <= nums.length
相似问题:
分析
- 要维护滑动窗口中所有数到中位数的距离之和 s
- 可以用有序集合,添加删除时根据和中位数的关系维护 s 即可
解答
|
|
4062 ms