首页 > 试题广场 >

小红的好数组

[编程题]小红的好数组
  • 热度指数:699 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小红定义一个数组是好数组,当且仅当该数组中有且仅有一个元素和其他元素不同,剩余的所有元素相同。
例如,[2,2,2,5,2,2]是好数组。
小红拿到了一个数组,她可以进行若干次操作,每次操作可以使得一个元素加 1 或者减 1 。小红希望用尽可能少的操作次数使得该数组变成好数组,你能帮帮她吗?

输入描述:
第一行输入一个正整数 n,代表数组的大小。
第二行输入 n 个正整数 a_i,代表数组的元素。
2\leq n \leq 10^5
1\leq a_i \leq 10^9


输出描述:
一个整数,代表最小的操作次数。

示例1

输入

6
2 2 4 5 1 2

输出

3

说明

对第三个元素进行两次减1操作,对第五个元素进行一次加1操作即可。
示例2

输入

3
1 1 1

输出

1

说明

对第一个元素进行一次加1操作即可。

示例3

输入

2
10 100

输出

0
头像 丨阿伟丨
发表于 2025-09-11 15:39:24
题目链接 小红的好数组 题目描述 小红定义一个数组为“好数组”,当且仅当该数组中有且仅有一个元素与其他所有元素不同。例如,[2, 2, 5, 2, 2] 是一个好数组。 给定一个数组,每次操作可以使数组中的任意一个元素加 1 或减 1。目标是计算将原数组变为“好数组”所需的最少操作次数。 解题思路 展开全文
头像 有胆量的柯基在学习
发表于 2025-08-20 13:52:12
#include <bits/stdc++.h> using namespace std; using int64 = long long; // 计算把整个已排序数组都变为 b[t] 的 L1 代价(用前缀和 O(1)) static inline long long cost_al 展开全文