【LeetCode】1802. 有界数组中指定下标处的最大值

news2024/9/24 10:23:56

1802. 有界数组中指定下标处的最大值

题目描述

给你三个正整数 nindexmaxSum 。你需要构造一个同时满足下述所有条件的数组 nums(下标 从 0 开始 计数):

  • nums.length == n
  • nums[i] 是 正整数 ,其中 0 <= i < n
  • abs(nums[i] - nums[i+1]) <= 1 ,其中 0 <= i < n-1
  • nums 中所有元素之和不超过 maxSum
  • nums[index] 的值被 最大化

返回你所构造的数组中的 nums[index]

注意:abs(x) 等于 x 的前提是 x >= 0 ;否则,abs(x) 等于 -x


示例 1

输入:n = 4, index = 2, maxSum = 6
输出:2
解释:数组 [1,1,2,1] 和 [1,2,2,1] 满足所有条件。不存在其他在指定下标处具有更大值的有效数组。


示例 2

输入:n = 6, index = 1, maxSum = 10
输出:3


提示

  • 1 <= n <= maxSum <= 109
  • 0 <= index < n

算法一:模拟

思路

  • 从 index 开始往两边扩充:维护一个 [l,r] 范围,每次往范围内每个位置 +1 ,通过这种方式维护一个向上生长的“三角形”。
    在这里插入图片描述

收获

  • 这个图形模拟比我之前动手计算清晰很多,值得学习。

算法情况

  • 时间复杂度:O(√M) , 其中 M = n - index
  • 空间复杂度:O(1)

代码

class Solution {
public:
    int maxValue(int n, int index, int maxSum) {
        int ans = 1;
        int left = index, right = index;
        // 整个数组一开始填充为1
        // rest记录全部填充为1,剩余1的个数
        int rest = maxSum - n;
        while(left > 0 || right < n-1){
            int len = right - left + 1;
            if(rest >= len){
                // 当前[l, r]范围全部+1
                rest -= len;
                ans ++;
                // 范围往两边扩大
                left = max(0, left - 1);
                right = min(right + 1, n - 1);
            }
            else break;
        }
        // 剩余的数平均分配
        ans += rest / n;

        return ans;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

怎么做form表单校验

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式表单校验1、input框生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的…

小程序从启动到发版

记录一下从拿到项目启动到发版的流程。 每个uniapp项目&#xff0c;管理员都会给你下发权限&#xff0c;用微信扫一扫登录 小程序官网 你可以在手机上看到你所有的权限账号&#xff0c;选择当前项目登录&#xff08;没有就是没下发你权限&#xff0c;找他去&#xff09; 开…

知道了这些vim编辑器使用小技巧可以让你写代码的速度直接飞起

文章目录一、前言二、Vim 编辑器的简单介绍2.1 命令模式2.2 输入模式2.3 底部命令模式2.4 三种模式的切换三、Vim 编辑器常用操作3.1 Vim 最基本的操作3.2 Vim 的光标移动操作3.3 多窗口同时打开多个文件四、一些其他的 Vim 小技巧一、前言 相信学习过Linux的朋友们对于Vim编辑…

pmp证书含金量怎么样?

含金量的问题&#xff0c;其实经过了这一系列的学习&#xff0c;这个证书对于学员们来说&#xff0c;只是一个证明自己有这个能力的证件而已&#xff0c;就算没有这个证件&#xff0c;他所学习的知识就不在自己的脑中了吗&#xff1f;必然是不可能的&#xff01; 这其实就是一…

excel函数应用:如何用数位函数分段提取身份证信息 下篇

在上篇内容中我们说到了用excel提取身份证号码中的户籍地址、出生日期、年龄、生肖、星座等内容&#xff0c;今天我们书接上回&#xff0c;继续带大家学习excel提取身份证信息的其他操作&#xff01;4、生日提醒生日提醒的问题&#xff0c;作者觉得要分两部分来说。&#xff08…

Reids的BigKey和HotKey

1.什么是BigKey和HotKey 1.1.Big Key Redis big key problem&#xff0c;实际上不是大Key问题&#xff0c;而是Key对应的value过大&#xff0c;因此严格来说是Big Value问题&#xff0c;Redis value is too large (key value is too large)。 到底多大的value会导致big key问…

各行业执法图传系统建设建议(华脉智联内参二)

各行业执法图传系统建设建议 让执法透明&#xff0c;不断提高执法工作效能 题记&#xff1a;为实现执法过程中的证据固定与执法场景记录&#xff0c;采用照相机、录音笔或固定监控等传统手段进行取证一直是最本源的需求。随着时代的变迁&#xff0c;传统的手段取证已无法满足完…

知识图谱构建:py2neo案例100个知识点应用

连接到 Neo4j 数据库执行一条简单的 Cypher 查询从查询结果中提取节点和关系插入一个新节点并与另一个节点建立关系根据标签查找节点根据属性查找节点根据关系查找节点在事务中执行多条查询使用索引查找节点使用约束确保唯一性删除节点和关系使用 py2neo.ogm 在 Python 中创建对…

访问学者申请要求及各国情况

访问学者申请要求及各国情况&#xff0c;下面就随知识人网小编一起来看一看。一、访问学者申请要求1、自身条件&#xff1a;访问学者主要是参看申请人当前的工作背景&#xff0c;专业背景以及科研背景等。在职群体申请访学需要具备本科学历和学位。此外&#xff0c;最重要的就是…

2023年,开挖电商这座金矿,有飞项这个协同工具就够了

2023年电商潜力怎样&#xff1f;据Morgan Stanley 研究&#xff0c;全球电商渗透还未见顶&#xff0c;物流发展、移动设备普及和市场拓展等因素仍然有利于电商发展&#xff0c;长期来看仍有增长空间&#xff0c;当前3.3万亿美元的电商市场规模有望在2026年增长到5.4万亿。 如何…

测试的准入准出

测试的准入准出 测试的准入住处是指什么情况下可以开始当前版本的测试工作&#xff0c;什么情况下可以结束当前版本的测试工作。不同项目、不同公司的测试准入准出标准都会有所不同。下面介绍一些通用的测试准入准出标准。 测试准入标准如下&#xff1a; (1)开发编码结束&#…

webpack概念

webpack概念webpackwebpack-概念webpack-使用准备webpack-基础使用webpack-更新打包webpack-配置修改webpack-打包流程图webpack 使用ES6模块化默认导出和导入 // 默认导出 export default {a: 10,b: 20 }// 默认导入 import Obj from js文件路径按需导出和导入 // 按需导出…

【每日一题】【LeetCode】【第三天】删除有序数组中的重复项

删除有序数组中重复项的解决之路 这个标签是简单&#xff0c;所以比较好过。 题干描述 根据题目描述&#xff0c;重点在于原地删除&#xff0c;也就是空间复杂度为O(1)。 测试案例&#xff08;部分&#xff09; 第一次 根据题目描述&#xff0c;重点在于原地删除。 class…

解决Linux【-bash: fork: retry: 没有子进程】

解决Linux【-bash: fork: retry: 没有子进程】问题发现问题解决设置Linux最大用户线程数设置单个用户可用最大进程数问题发现 日常工作中&#xff0c;服务器连不上&#xff0c;好在昨天登陆的服务器用户没有下线&#xff0c;然后执行任何命令时返回- bash: fork: retry: 没有子…

React(coderwhy)- 03(高阶组件+动画)

1.React性能优化SCU React更新机制 React的更新流程 ◼ React在props或state发生改变时&#xff0c;会调用React的render方法&#xff0c;会创建一颗不同的树。 ◼ React需要基于这两颗不同的树之间的差别来判断如何有效的更新UI&#xff1a;  如果一棵树参考另外一棵树进行完…

可观测产品的最佳实践,涵盖端到端的可观测解决方案丨阿里云用户组深圳站

2022 年 9 月 28 日&#xff0c;阿里云在深圳举办了第 11 场阿里云用户组&#xff08;AUG&#xff09;活动&#xff0c;活动主题“可观测性实践”吸引了众多技术从业者及企业管理者来到现场。通过本次活动&#xff0c;参会企业了解到三块内容&#xff1a;1. Java 应用最佳实验&…

小蓝本 第一本 《因式分解技巧》 第八章 多项式的一次因式 笔记 (第八天)

小蓝本 第一本 《因式分解技巧》 第八章 多项式的一次因式 笔记 &#xff08;第八天&#xff09;前言余数定理有理根求法第一步第二步(可能有理根多的情况下&#xff0c;可以用)第三步快速识别特殊有理根情况1情况2求解注意习题8题目题解改错前言 坚持的第8天&#xff0c;因为…

北大陈斌Python算法笔记(一)

前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红中 &#x1f342;不就是蓝桥杯嘛&#xff0c;干他&#xff01;&#xff01;我堂堂 线性结构 线性结构是一种有序数…

优先级反转问题及解决办法

优先级反转问题及解决办法什么是优先级反转解决方法1&#xff1a;优先级继承解决方法2&#xff1a;优先级天花板总结什么是优先级反转 优先级反转&#xff0c;是指在多线程的环境下&#xff0c;并且使用了信号量时&#xff0c;可能会出现的这样一种不合理的现象&#xff0c;即…

@PostConstruct 和 @PreDestroy 使用

目录1.简介2.使用3.注意事项4.执行顺序5.测试6.测试结果1.简介 PostConstruct&#xff1a; Java 自带的注解&#xff0c;在方法上使用该注解&#xff0c;会在项目启动的时候执行被修饰的方法。 PreDestroy&#xff1a; Java 自带的注解&#xff0c;在方法上使用该注解&#xff…