问题:使数组唯一的最小增量

给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1

返回使 A 中的每个值都是唯一的最少操作次数。

示例 1:

输入:[1,2,2]
输出:1
解释:经过一次 move 操作,数组将变为 [1, 2, 3]。

示例 2:

输入:[3,2,1,2,1,7]
输出:6
解释:经过 6 次 move 操作,数组将变为 [3, 4, 1, 2, 5, 7]。
可以看出 5 次或 5 次以下的 move 操作是不能让数组的每个值唯一的。

提示:

  1. 0 <= A.length <= 40000
  2. 0 <= A[i] < 40000

链接:https://leetcode-cn.com/contest/weekly-contest-112/problems/minimum-increment-to-make-array-unique/

分析:

1.每次move会将一个数字值加一

2.最终每个数字都不一样

3.最终结果应该是唯一的

4.增加方式不唯一,但是等价,比如从1 4 变为4 5,可以是1+4,也可以是1+3,4+1

5.操作次数其实就是最终数列和减去初始数列和

那么将原序列排序,要求递增,且差值中至少1,如果本身值就比前一个大于1,则保持,否则增加为前一个数字值+1,统计累计加值即为最终结果。

AC Code:

 class Solution {
public:
int minIncrementForUnique(vector<int>& A) {
int ret = ;
if (A.size() < )
{
return ;
}
sort(A.begin(), A.end());
int pre = A[];
for (int i = ; i < A.size(); i++)
{
if (A[i] <= pre)
{
ret += (pre + - A[i]);
pre += ;
}
else
{
pre = A[i];
}
} return ret;
}
};

其他:

第一code:

 typedef long long ll;
typedef vector<int> VI;
typedef pair<int,int> PII; #define REP(i,s,t) for(int i=(s);i<(t);i++)
#define FILL(x,v) memset(x,v,sizeof(x)) const int INF = (int)1E9;
#define MAXN 100005 class Solution {
public:
int minIncrementForUnique(vector<int>& A) {
if (A.size() == ) return ;
sort(A.begin(), A.end());
int last = A[];
int ans = ;
REP(i,,A.size()) {
if (A[i] <= last) {
ans += last + - A[i];
last++;
} else {
last = A[i];
}
}
return ans;
}
};

最新文章

  1. Spring MVC学习笔记——Welcome
  2. spring4 mvc 出错
  3. VBA中操作XML
  4. 用VIM写作
  5. JavaScript中的Date
  6. hdu2034java
  7. 轻松使用px为单位开发移动端页面
  8. 使用URL读取网络图片资源
  9. HDU 1677 Nested Dolls
  10. 201521123044 《Java程序设计》第3周学习总结
  11. 用JS制作一个信息管理平台完整版
  12. winform倒计时
  13. 20165237 2017-2018-2《Java程序设计》课程总结
  14. Java_图片切片
  15. 纸小墨ink简洁主题story爱上你的故事
  16. Win10 远程桌面连接出现“要求的函数不受支持”的解决办法之修改注册表
  17. 每天一个linux命令(14):head命令
  18. G711 G723 G729线路占多少带宽问题
  19. virtual关键字
  20. itcast-Hibernate orm元数据和 关系操作

热门文章

  1. Jmeter 跨线程组传递参数 之两种方法
  2. 14.插入数据、复制数据--SQL
  3. Codeforces 140C(二分、构造)
  4. Avito Cool Challenge 2018-B. Farewell Party(思维)
  5. [代码修订版] Python 踩坑之旅 [进程篇其四] 踩透 uid euid suid gid egid sgid的坑坑洼洼
  6. SQL Server事务的四种隔离级别
  7. 基于JAVA的设计模式之适配器模式
  8. session会话
  9. JavaScript_11_验证
  10. 51nod 1693 水群