​力扣解法汇总1802. 有界数组中指定下标处的最大值

news/2024/7/5 5:10:38

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:力扣


描述:

给你三个正整数 nindex 和 maxSum 。你需要构造一个同时满足下述所有条件的数组 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

解题思路:

* 解题思路:
* 这题其实就是一道数学题,肯定是有O(1)的算法的。这里为了图省时,就不尝试了。
* 首先n个位置,每个位置都放1。然后从index开始增加,
* 先index位置+1,如果sum不超出限制,
* 则index-1位置+1,index位置+2,index+1位置+1。
* 持续继续下去,成金字塔状增加,一直到sum超过maxSum。

代码:

public class Solution1802 {

    public int maxValue(int n, int index, int maxSum) {
        int sum = 1;
        int max = 0;
        int addSum = 1;
        while (sum <= (maxSum - n)) {
            max++;
            if (max <= index && max < (n - index)) {
                addSum += 2;
            } else if (max <= index || max < (n - index)) {
                addSum += 1;
            } else {
                max += (maxSum - sum) / n -1;
                break;
            }
            sum += addSum;
        }
        return max + 1;
    }
}


http://lihuaxi.xjx100.cn/news/568866.html

相关文章

03-Alibaba微服务组件Nacos注册中心实战

什么是 Nacos Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 的关键特性包括: 服务发现和服务健康监测 动态配置服务 动态 DNS 服务 服务及其元数据管理 Nacos…

java swing电子商务系统

一、项目简介 本项目是一套基于java swing的电子商务系统&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;ec…

DBCO-PEG-CLS,胆固醇-聚乙二醇-二苯并环辛炔 简介;DBCO-PEG-Cholesterol

DBCO-PEG-Cholesterol属于高分子点击试剂&#xff0c;胆固醇PEG-DBCO是一种具有DBCO反应基团的亲脂性PEG衍生物。DBCO-PEG试剂在水缓冲液中具有快速动力学和稳定性&#xff0c;可用于标记具有高特异性和反应性的叠氮化物修饰的生物分子。 点击类化学试剂包括&#xff1a;DBCO、…

SAP入门技术分享二:数据类型

数据类型1.概要2.数据类型的种类&#xff08;1&#xff09;ABAP基本数据类型&#xff08;2&#xff09;局部数据类型&#xff08;3&#xff09;全局数据类型3.DATA语句&#xff08;1&#xff09;TYPE type&#xff08;2&#xff09;LIKE num&#xff08;3&#xff09;VALUE int…

JAVA代码审计笔记

预编译不是万能的&#xff0c;否则就不会出现这么多的SQL注入漏洞。order by后面的语句&#xff0c;是不能够用预编译进行处理的&#xff0c;只能通过拼接进行操作&#xff0c;因此需要手动过滤。 SQL注入漏洞的防范方法&#xff1a; 1、预编译 2、类型转换 xss漏洞的危害&…

面试官:请实现Javascript发布-订阅模式

简介 发布-订阅模式又叫做观察者模式&#xff0c;他定义了一种一对多的依赖关系&#xff0c;即当一个对象的状态发生改变的时候&#xff0c;所有依赖他的对象都会得到通知。 回忆曾经 作为一名前端开发人员&#xff0c;给DOM节点绑定事件可是再频繁不过的事情。比如如下代码…

Oracle_4_分区、分区索引

数据切分:1、垂直:不同的表存放在不同的地方。2、水平:按照规则将同一个表中的数据分开存放。一、range分区(范围分区) 创建表的时候,可以按照规则把一个表分成几个部分,分开存放。 结构:create table 表名(字段信息)--选定字段进行分区partition by range(字段名)(--…

P2257 YY的GCD

求 \[\begin{aligned} & \sum^{n}_{i = 1} \sum^{m}_{j = 1} [ gcd(i, j) \in prime]\\ & \sum^{}_{k \in prime} \sum^{n}_{i = 1} \sum^{m}_{j = 1}[ gcd(i, j) = k]\\ \end{aligned} \]设 \[\begin{aligned} f(s) & = \sum^{n}_{i = 1} \sum^{m}_{j = 1}[ gcd(i…