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

embedded/2024/10/23 2:42:46/

给你一个整数数组 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

我的解答

java">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.ppmy.cn/embedded/129712.html

相关文章

JavaSE之多态

文章目录 多态的概念多态的实现条件向上转型动态绑定静态绑定向下转型Object类 给个关注叭        个人主页 JavaSE专栏 前言&#xff1a;本篇文章主要整理了多态的概念、实现条件、多态性的体现、向上转型、向下转型、动态绑定和静态绑定以及Object类中的equals、toStri…

路由器概述

一、路由器的工作原理 根据路由表转发数据 二、路由表与其形成 2.1路由表 &#xff08;1&#xff09;概念 路由&#xff1a;从源主机到目的主机的转发过程路由表&#xff1a;路由器中维护的路由条目的集合&#xff1b;路由器根据路由表做路径选择 &#xff08;2&#xff…

支持向量机SVM原理详解

SVM原理详解 1、超平面2、SVM原理1. 问题定义2. 分类决策得到约束条件 3. 最大化间隔4. 优化目标 3、凸优化问题1. 原始优化问题优化目标约束条件 2. 拉格朗日乘子法3. 拉格朗日函数分析4. 求解对 w w w 和 b b b 的极值5. 构造对偶问题对偶问题的约束条件&#xff1a; 6、通…

【含文档】基于ssm+jsp的旧物交易平台(含源码+数据库+lw)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: apache tomcat 主要技术: Java,Spring,SpringMvc,mybatis,mysql,vue 2.视频演示地址 3.功能 系统定义了两个…

【原创】java+springboot+mysql校园留言墙管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

【JavaEE初阶】网络编程TCP协议实现回显服务器以及如何处理多个客户端的响应

前言 &#x1f31f;&#x1f31f;本期讲解关于TCP/UDP协议的原理理解~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 &#x1f386;那么废话不多说…

C#生成SVG文件(文本、线段、圆、椭圆、多边形的示例)

1. 介绍 一些参考博客&#xff1a; C#生成SVG涉及文字、线段、椭圆的示例 用C#解析渲染显示SVG矢量图转化格式保存 C#操作SVG矢量图-nuget库svg 开源库&#xff1a;https://github.com/svg-net/SVG 在NuGet上搜索SVG并安装&#xff1a; 2. 示例 引入的命名空间&#xff1a; …

Day15numpy

迭代数组 nditer是NumPy中的一个迭代器对象&#xff0c;用于高效地遍历多维数组。它提供了多种选项和控制参数&#xff0c;如遍历顺序&#xff08;order&#xff09;、迭代标志&#xff08;flags&#xff09;和操作标志&#xff08;op_flags&#xff09;。 order 参数 order…