当前位置: 首页 > news >正文

【从零开始的LeetCode-算法】945. 使数组唯一的最小增量

给你一个整数数组 nums 。每次 move 操作将会选择任意一个满足 0 <= i < nums.length 的下标 i,并将 nums[i] 递增 1

返回使 nums 中的每个值都变成唯一的所需要的最少操作次数。

生成的测试用例保证答案在 32 位整数范围内。

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 10^5

  • 0 <= nums[i] <= 10^5

我的解答

class Solution {public int minIncrementForUnique(int[] nums) {// 对数组进行排序Arrays.sort(nums);int res = 0;// 遍历排好序的数组for(int i = 1;i < nums.length; i++){// 如果当前元素等于上一元素,则该元素数值+1if(nums[i] == nums[i - 1]){nums[i]++;res++;}// 因为上面操作可能会打乱排好序的数组,所以需要处理错乱的元素// 如果当前元素小于上一元素(即排序错乱),则该元素数值需要增加至比前一元素的值要大// 即增加至比前一元素要大1的值,其操作次数为(上一元素的值 - 当前元素的值 + 1) else if(nums[i] < nums[i - 1]){res += nums[i - 1] - nums[i] + 1;nums[i] = nums[i - 1] + 1;}}return res;}
}

 

http://www.lryc.cn/news/464505.html

相关文章:

  • Java程序设计:spring boot(2)
  • 服务器运维监控平台
  • css中 global 和 deep(两个样式穿透) 区别
  • 【星闪技术】WS63E模块的WiFi客户端测试
  • Android面试之5个Kotlin深度面试题:协程、密封类和高阶函数
  • 操作系统 和 初识进程
  • QT--Qlabel学习、获取文本和设置文本、文本对齐方式、文本换行、显示图片
  • 深度学习:终身学习(Life-Long Learning)详解
  • 前端UI框架
  • 最佳副屏串流解决方案:如何低成本打造电脑拓展副屏?
  • SQL Injection | SQL 注入概述
  • 【Linux 从基础到进阶】磁盘I/O性能调优
  • 浅谈AGI时代的“数据枢纽”——向量数据库
  • 生成 Excel 表列名称
  • 基于yolov10的烟雾明火检测森林火灾系统python源码+pytorch模型+评估指标曲线+精美GUI界面+数据集
  • UltraISO(软碟通)制作U盘制作Ubuntu20.04启动盘
  • 【EtherCAT实践篇一】TwinCAT 3安装、使用
  • 4、CSS3笔记
  • Docker无法拉取镜像解决办法
  • Ubuntu 20.04安装Qt 5.15(最新,超详细)
  • 桂林旅游一点通:SpringBoot平台应用
  • 【WPF】04 Http消息处理类
  • 如何精准设置线程数,提升系统性能的秘密武器!
  • 正则表达式:从入门到精通
  • CRMEB标准版Mysql修改sql_mode
  • linux驱动访问的地址为虚拟地址
  • 基于SpringBoot+Vue+uniapp微信小程序的社区门诊管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 使用WPF写一个简单的开关控件
  • FPGA采集adc,IP核用法,AD驱动(上半部分)
  • MongoDB 如何做mapreduce