1827. 最少操作使数组递增 ----- 贪心算法

2023-11-13

给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。

比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。
请你返回使 nums 严格递增 的 最少 操作次数。

我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] < nums[i+1] 。一个长度为 1 的数组是严格递增的一种特殊情况。

示例 1:

输入:nums = [1,1,1]
输出:3
解释:你可以进行如下操作:
1) 增加 nums[2] ,数组变为 [1,1,2] 。
2) 增加 nums[1] ,数组变为 [1,2,2] 。
3) 增加 nums[2] ,数组变为 [1,2,3] 。
示例 2:

输入:nums = [1,5,2,4,1]
输出:14
示例 3:

输入:nums = [8]
输出:0

提示:

1 <= nums.length <= 5000
1 <= nums[i] <= 104

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-operations-to-make-the-array-increasing
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {
public:
    int minOperations(vector<int>& nums) {
        int ans = 0, mx = 0;
        for (int& v : nums) {
            ans += max(0, mx + 1 - v);
            mx = max(mx + 1, v);
        }
        return ans;
    }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1827. 最少操作使数组递增 ----- 贪心算法 的相关文章

随机推荐

  • TVM:源码编译安装

    TVM Linux源码编译安装 笔者环境 OS Ubuntu 18 04 CMake 3 10 2 gcc 7 5 0 cuda 11 1 编译安装过程总览 本文将简介 tvm 的编译安装过程 包含两个步骤 通过C 代码构建共享库 设置相关
  • Android - BlueTooth BLE 之 Central 与 Peripheral

    一 前言 Andorid 5 0 之前是无法进行 外围设备开发的 在Android 5 0 API 21 android bluetooth le包下 新增加 Scaner相关类和 Advertiser 相关类 目前最后使用Scanner相
  • 49天精通Java,第5天,Java控制台输入输出语句

    目录 一 控制台输出 二 读取输入 三 格式化输出 1 类型转换字符 2 代码实例
  • 搭建github服务器_【教程篇】使用GitHub+Hexo搭建个人静态博客

    嗨 大家好 你们的万金油管家小e又来了 这次就教大家一些利用GitHub和Hexo本地服务器搭建个人博客的教程 可能教程要好几期 那么这期就先从最最基础的GitHub的注册 以及本地环境的搭建 GitHub仓库的建立等等开始 近年来很多人都
  • 十大应用安全威胁

    常见应用安全威胁 OWASP TOP 10 2013 注入 失效的身份认证和会话管理 跨站脚本攻击 XSS 不安全的直接对象引用 安全配置错误 敏感信息泄露 功能级访问控制缺失 跨站请求伪造 CSRF 使用含有已知漏洞的组件 未验证的重定向
  • 【MyBatis】MyBatis 二级缓存全详解

    1 概述 转载 MyBatis 二级缓存全详解 上一篇文章中我们介绍到了 MyBatis 一级缓存其实就是 SqlSession 级别的缓存 什么是 SqlSession 级别的缓存呢 一级缓存的本质是什么呢 以及一级缓存失效的原因 我希望
  • Ubuntu扩展存储合理分配swap分区

    文章目录 前言 1 为Ubuntu扩存 外部存储 1 1修改存储 1 2 初始化分配的磁盘 2 为Ubuntu调整swap分区大小 总结 前言 我们在Ubuntu上运行某些大型游戏或者编译一些工程代码的时候 往往会遇到内存或外部存储不够导致
  • mac 本地运行 http-proxy-middleware ,请求超时

    const http require http customer target http 10 10 111 192 8080 target http user jinfu baohan com changeOrigin true 是否启用
  • JS如何将变量作为一个对象的Key

    JS如何将变量作为一个对象的Key var lastWord last word var a first word hello lastWord world a first word hello a lastWord world a las
  • Mysql进阶优化篇06——分组查询优化、分页查询优化、覆盖索引

    前 言 作者简介 半旧518 长跑型选手 立志坚持写10年博客 专注于java后端 专栏简介 mysql基础 进阶 主要讲解mysql数据库sql刷题 进阶知识 包括索引 数据库调优 分库分表等 文章简介 本文将介绍JOIN语句的底层原理
  • Java中通过反射+自定义注解判断对象中部分属性是否为空,返回为空字段的名称或自定义含义

    场景 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出 若依管理系统前后端分离版基于ElementUI和SpringBoot怎样实现Excel导入和导出 霸道流氓气质的博客 CSDN博客 在上
  • 【爬虫】python复原网站前端密码加密

    爬虫 python复原网站前端密码加密 前言 前几天学完了尚硅谷的爬虫课程 这几天刚好有一门课出成绩了 我们学校的教务处的查分系统手机无法正常打开 好像只有ios设备用不了 学校的一些学长弄了一个公众号 在公众号里面手机可以很方便的查到分数
  • SMTP服务器地址及端口

    在开发过程中有些场景会用到发送邮件的功能 根据客户需求不同会使用到各种类型的邮箱服务 发送邮件的方法都大同小异 差异大的就是各个邮箱服务的地址及端口 找起来比较麻烦 整理到部分比较常用的可根据需要获取 部分自建的邮箱的SMTP是自定义的 需
  • ARP协议和攻击原理

    转自 https blog 51cto com 13570193 2083332 ARP 在TCP IP协议栈中 最不安全的协议莫过于ARP了 我们经常听到的网络扫描 内网渗透 流量欺骗等等 他们基本上都与ARP有关系 甚至可以说 他们的底
  • 我的ACM生涯——迷失

    自从EC打铁归来已经一星期了了 这一周我都在颓废 似乎又回到以前的自己 没想到 我在集训队呆了2年 还是菜的真实 虽然把所有的原因 都归结到菜上 的确是个逃避问题正解的办法 我决定写点什么总结 算是一个收尾 先来做个回忆 还记得第一次看到自
  • SpringBoot 事件发布监听机制使用、分析、注意点 (一篇到位)

    前言 这一篇从应用角度来跟大伙讲讲 这个 spring 事件监听机制 顺便涉及到那些我认为大家应该一块了解的 我也会展开说说 文章内容 包括不限于 1 对比观察者模式 2 应用场景的分析 3 事件的创建 编码介绍 4 事件如何 发出 5 事
  • ES6:迭代器 Iterator

    迭代器是一个统一的接口 也可以叫遍历器 它的作用是使各种数据结构可被便捷的访问 它是通过一个键为Symbol iterator 的方法来实现 定义一个数组 const people Tom Jerry Mario Yoshi 在控制台打印它
  • 【JavaScript】找出字符串中出现最多的字符及次数

    统计字符串中各个字符的长度 var str dafadfdaaaaaaaaafffffcccccccssssssss var obj for var i 0 i
  • Unity屏幕适配解决方案

    文章目录 UI尺寸选择 市面设备比例 内存占用 分辨率适配 高分辨率 分屏模式 宽高比适配 常规尺寸适配 刘海屏适配 全面屏适配 UI尺寸选择 市面设备比例 截至2017年9月 iOS与Android移动游戏设备比例约为iOS占28 And
  • 1827. 最少操作使数组递增 ----- 贪心算法

    给你一个整数数组 nums 下标从 0 开始 每一次操作中 你可以选择数组中一个元素 并将它增加 1 比方说 如果 nums 1 2 3 你可以选择增加 nums 1 得到 nums 1 3 3 请你返回使 nums 严格递增 的 最少 操