🗒️2602. 使数组元素全部相等的最少操作次数
2025-4-13
| 2025-4-13
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Apr 13, 2025 01:51 AM
给你一个正整数数组 nums 。
同时给你一个长度为 m 的整数数组 queries 。第 i 个查询中,你需要将 nums 中所有元素变成 queries[i] 。你可以执行以下操作 任意 次:
  • 将数组里一个元素 增大 或者 减小 1 。
请你返回一个长度为 m 的数组 answer ,其中 answer[i]是将 nums 中所有元素变成 queries[i] 的 最少 操作次数。
注意,每次查询后,数组变回最开始的值。

前缀和 + 二分

思路:在 nums 排序后,如果 queries 在 nums[0] 至 nums[n-1]区间之外,只需要求两者和的差值就行了 如果在 nums[0] 至 nums[n - 1] 区间之内,就无法向上面这么算了。 但是,我们可以将 nu划分为两个区间,继续构造出在区间之外的情况。
涉及到了类型转换,没办法使用 partial_sum 计算前缀和,需要手动计算。

📎 参考

  • 前缀和
  • 2968. 执行操作使频率分数最大3413. 收集连续 K 个袋子可以获得的最多硬币数量
    Loading...