LeetCode945-使数组唯一的最小增量
问题:使数组唯一的最小增量
给定整数数组 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 操作是不能让数组的每个值唯一的。
提示:
0 <= A.length <= 40000
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;
- }
- };
LeetCode945-使数组唯一的最小增量的更多相关文章
- [Swift]LeetCode945. 使数组唯一的最小增量 | Minimum Increment to Make Array Unique
Given an array of integers A, a move consists of choosing any A[i], and incrementing it by 1. Return ...
- leetcode 945. 使数组唯一的最小增量
题目 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例 1: 输入:[1,2,2] 输出:1 解释:经过一次 mov ...
- LeetCode-使数组唯一的最小增量
题目描述: 给定整数数组 A,每次 move 操作将会选择任意 A[i],并将其递增 1. 返回使 A 中的每个值都是唯一的最少操作次数. 示例: 输入:[1,2,2] 输出:1 解释:经过一次 mo ...
- LeetCode 453. 最小移动次数使数组元素相等(Minimum Moves to Equal Array Elements) 47
453. 最小移动次数使数组元素相等 453. Minimum Moves to Equal Array Elements 题目描述 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移 ...
- Java实现 LeetCode 453 最小移动次数使数组元素相等
453. 最小移动次数使数组元素相等 给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1. 示例: 输入: [1,2,3] 输出: 3 ...
- java算法----排序----(6)希尔排序(最小增量排序)
package log; public class Test4 { /** * java算法---希尔排序(最小增量排序) * * @param args */ public static void ...
- Leetcode 462.最少移动次数使数组元素相等
最少移动次数使数组元素相等 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输入: [1,2, ...
- Java实现 LeetCode 801 使序列递增的最小交换次数 (DP)
801. 使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 A 和 B . 我们可以交换 A[i] 和 B[i] 的元素.注意这两个元素在各自的序列中应该处于相同的位置. 在交换过一些元 ...
- Java实现 LeetCode 462 最少移动次数使数组元素相等 II
462. 最少移动次数使数组元素相等 II 给定一个非空整数数组,找到使所有数组元素相等所需的最小移动数,其中每次移动可将选定的一个元素加1或减1. 您可以假设数组的长度最多为10000. 例如: 输 ...
随机推荐
- Centos 6.x 安装 Redis
本文以Centos6.8为例子,来进行演示. 1:下载最新版的Redis,比如我们安装在根目录下的redis文件下中 tar zxvf http://download.redis.io/release ...
- easyui的datagrid用js插入数据等编辑功能的实现
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Hive_Hive的数据模型_视图
- 视图是一种虚表,是一个逻辑概念:可以跨越多张表- 视图建立在已有表的基础上,视图赖以建立的这些表称为基表.- 视图可以简化复杂的查询. 创建视图 create view viewName as s ...
- Jmeter4.0----编写测试脚本(5)
1.说明 以HTTP请求为例,和小伙伴门分享一下jmeter测试脚本的基本编写步骤 2.步骤说明 第一步:打开jmeter,更改测试计划名称为 Test batchSignForDir(修改计划名称, ...
- net core (上)
net core (上) 本文是基于Windows10的. 下载地址: https://code.visualstudio.com/ insider 版下载地址: https://code.visua ...
- 记录一个修改application.properties时遇到的坑
有一个需求是会频繁修改配置文件中的常量,为了方便就会用unzip解压war包,修改propertites中的值后重新打war 包,部署,但是发现修改的值没有起作用,,一直在纠结...后来发现其实在编译 ...
- HDU 1260 Tickets DP
http://acm.hdu.edu.cn/showproblem.php?pid=1260 用dp[i]表示处理到第i个的时候用时最短. 那么每一个新的i,有两个选择,第一个就是自己不和前面的组队, ...
- 开启 PHP 错误提示配置步骤详解
PHP编码出错不提示,这对于开发来说,是很不方便的.下面讲解如何开启错误提示步骤: 1. 打开php.ini文件. 以我的ubuntu为例,这个文件在: /etc/php5/apache2 目录下. ...
- 文件操作函数及光标,tell,truncate
一丶文件基本操作 1.打开文件 open(文件名(路径),mode = "?",encoding = "字符集") 2.文件路径: 1.绝对路径,从磁盘的根目录 ...
- ionic 2 起航 控件的使用 客户列表场景(二)
首先放出我hithub项目代码例子,有兴趣研究探讨的同学可以去看看 https://github.com/linyuebin2016/ionic2.git 下面我们来尝试下第一个项目场景 一份客户的列 ...