2834. 找出美丽数组的最小和

2834. 找出美丽数组的最小和

给你两个正整数:ntarget

如果数组 nums 满足下述条件,则称其为 美丽数组

  • nums.length == n.
  • nums 由两两互不相同的正整数组成。
  • 在范围 [0, n-1] 内,不存在 两个 不同 下标 ij ,使得 nums[i] + nums[j] == target

返回符合条件的美丽数组所可能具备的 最小 和,并对结果进行取模 109 + 7

示例 1:

输入:n = 2, target = 3
输出:4
解释:nums = [1,3] 是美丽数组。
- nums 的长度为 n = 2 。
- nums 由两两互不相同的正整数组成。
- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。
可以证明 4 是符合条件的美丽数组所可能具备的最小和。

示例 2:

输入:n = 3, target = 3
输出:8
解释:
nums = [1,3,4] 是美丽数组。 
- nums 的长度为 n = 3 。 
- nums 由两两互不相同的正整数组成。 
- 不存在两个不同下标 i 和 j ,使得 nums[i] + nums[j] == 3 。
可以证明 8 是符合条件的美丽数组所可能具备的最小和。

示例 3:

输入:n = 1, target = 1
输出:1
解释:nums = [1] 是美丽数组。

提示:

  • 1 <= n <= 109
  • 1 <= target <= 109

解题思路

已知美丽数组有三个条件,前两个条件可以通过构建从1到n的数组满足,最后一个条件需要在此基础上对数组进行调整。

如果2*n<target,则无需进行调整,直接返回1到n的整数和S=(1+n)*n/2

如果2*n<target,需要对数组进行调整,即所有小于target/2的部分保持原样,因为这个区域内的元素不可能出现两个元素和达到target的情况;原右边的元素(范围[target/2,n])向右迁移到[target, target + (n-target/2-1)]。这个问题就被转化为了求等差数列之和。此时记k1 = target/2k2=n-k1,分别表示左侧元素和右侧元素个数。则数组和:

S = S1 + S2 = (1+k1)*k1/2 + (target + target+k2-1)*k2/2

代码实现

class Solution {public int minimumPossibleSum(int n, int target) {int mod = 1000000007;if(target > 2*n ){return (int)(((long)((1 + n)*n/2))%mod);}long k1 = target/2, k2 = n-k1 ;return  (int)((((1+k1)*k1)/2 + ((target + target + k2 - 1)*k2)/2)%mod);}
}

踩坑点

容易踩坑的地方在于,涉及到整数乘法,用int会发生溢出。因此,可以先用long存储乘法结果,取模后再转为int类型

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

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

相关文章

一元函数微分学——刷题(26

目录 1.题目&#xff1a;2.解题思路和步骤&#xff1a;3.总结&#xff1a;小结&#xff1a; 1.题目&#xff1a; 2.解题思路和步骤&#xff1a; 归纳求解&#xff0c;把指数写成负数就比较容易看出来规律 3.总结&#xff1a; 归纳求解&#xff0c;把指数写成负数就比较容易…

资产管理系统有哪些(一体化资产管理平台推荐)

企业资产管理系统是一种关键的工具&#xff0c;旨在帮助企业有效地管理和追踪其资产。 该系统利用计算机系统和相关软件&#xff0c;通过信息化、智能化的方式&#xff0c;对资产进行全面的可视化管理&#xff0c;从而提高管理效率、降低运营成本&#xff0c;并确保资产的安全…

Hadoop配置日志的聚集——jobhistory不显示任务问题

问题&#xff1a; 一开始job history是正常的&#xff0c;配置了日志的聚集以后不管做什么任务都不显示任务&#xff0c;hdfs是正常运行&#xff0c;而且根据配置步骤都重启过了。 下面先po出日志聚集的操作步骤&#xff0c;再讲问题 1.配置yarn-site.xml cd $HADOOP_HOME/e…

经典排序算法之快速排序|c++代码实现|什么是快速排序|如何代码实现快速排序

引言 排序算法c实现系列第6弹——快速排序 文章末尾还有本菜已实现的其他排序算法文章的链接。不过&#xff0c;排序算法这个系列还没更完&#xff0c;争取本周末搞完&#xff01;之后还会有堆排序、桶排序等的代码实现&#xff0c;感兴趣的佳人可以点个赞&收藏&#xff…

2024.03.04——2024.03.10 力扣练习总结及专项巩固

1. &#xff08;18. 四数之和&#xff09;已知在一个cpp程序中&#xff0c;使用了"#include<algorithm>"语句&#xff0c;声明引入algorithm头文件。现在假如有一个vector<int>类型的变量nums{-1, 3, 1, -2}&#xff0c;如果仅使用一个语句对其进行排序&…

C++ 信号槽实现sigslot库(不使用QT框架)

SIGSLOT库很简单就一个文件&#xff0c;以下是使用简单的方法&#xff1a; 1、没有参数 signal0<> m_sigSdkInit;信号参数初始化 m_sigSdkInit.connect(this,&类名::SdkLoadingSlot); 信号槽建立连接 m_sigSdkInit.emit();触发方法 2、带一个参数 signal0<int>…

Igraph入门指南 4

二、图的创建 图分有向图和无向图&#xff0c;所以图的创建有各自的实现方式。 1、手工创建图&#xff1a; 1-1 通过文本创建&#xff1a;graph_from_literal 通过每项提供两个顶点名&#xff08;或ID号&#xff09;作为一条边的格式&#xff0c;手动创建图&#xff0c;顶点…

【敬伟ps教程】文字处理工具

文章目录 文字工具使用方式文字图层文字工具选项字符面板段落面板文字工具使用方式 文字工具(快捷键T),包含横排和直排两种类型 创建文本两种类型:点式文本、段落文本 创建文字方式 1、在画面上单击,出现文字光标,可输入文字,然后需要在工具栏中点击“√”或者 Ctrl+…

数学建模-动态规划(美赛运用)

动态规划模型的要素是对问题解决的抽象&#xff0c;其可分为&#xff1a; 阶段。指对问题进行解决的自然划分。例如&#xff1a;在最短线路问题中&#xff0c;每进行走一步的决策就是一个阶段。 状态。指一个阶段开始时的自然状况。例如&#xff1a;在最短线路问题中&#xff…

docker 运行异构镜像

概述 关于docker镜像在不同的cpu架构下运行报错的解决办法&#xff0c;作者踩坑验证&#xff0c;在此分享经验 某次工作遇到需要银行内部部署docker镜像&#xff0c;由于行内已经开始走信创的路线&#xff0c;使用鲲鹏系统&#xff0c;arm架构&#xff0c;记过就遇到了standa…

Linux:安装docker并修改其目录

一、背景 1、通常而言&#xff0c;云服务器的系统盘只有40G&#xff0c;若安装docker后直接运行&#xff0c;则其下载的镜像及容器&#xff0c;均在该系统盘下。 2、当前服务器硬盘背景为&#xff1a;40G系统盘 额外数据盘。 3、需求&#xff1a;将docker运行目录修改至数据盘…

ComfyUI-Flowty-TripoSR

这是一个自定义节点&#xff0c;可让您直接从ComfyUI使用TripoSR。TripoSR 是由 Tripo AI 和 Stability AI 合作开发的最先进的开源模型&#xff0c;用于从单个图像快速前馈 3D 重建。&#xff08;TL;DR 它从图像创建 3d 模型。这篇文章主要介绍了将TripoSR作为ComfyUI节点的配…

华容道问题求解_详细设计(四)之查找算法2_BFS

&#xff08;续上篇&#xff09; 利用BFS查找&#xff0c;会找到最短路径&#xff08;没有权重的图&#xff09;&#xff0c;这个道理比较简单&#xff0c;这是由于寻找路径的方法都是从起点或者接近起点的位置开始的。查找过程如果画出图来&#xff0c;类似于一圈圈的放大&…

【动态规划入门】判断子序列

每日一道算法题之判断子序列 一、题目描述二、思路三、C代码 一、题目描述 题目来源&#xff1a;LeetCode 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位…

HashMap 底层,同时遍历+删除会出现什么问题?怎么解决

HashMap底层使用的是数组链表/红黑树的方式实现的 在并发场景下同时进行遍历删除&#xff0c;会出现ConcurrentModificationException异常&#xff0c;这是因为HashMap的迭代器是快速失败的&#xff08;fail-fast&#xff09;,当检测到结构性的改变&#xff08;比如增加或删除…

java IO实现一次性读取一个文件全部内容后在写入一个文件

java IO实现一次性读取一个文件全部内容后在写入一个文件 import java.io.*;/*** author admin*/ public class FileIo {public static void main(String[] args) {String content getFileString();File outputFile new File("C:\\Users\\admin\\Desktop\\test\\1.txt&…

Kubernetes 几大概念的作用

更详细的组件通信流程 Kubernetes 主要由以下几个核心组件组成&#xff1a; 1. etcd 保存了整个集群的状态&#xff1b; 2. API Server 提供了资源操作的唯一入口&#xff0c;并提供认证&#xff0c;授权&#xff0c;访问控制&#xff0c;API 注册和发现等机制&#xff1b; …

python安装graph-tool 和 torch_geometric,pytorch总结:

目录 1.graph-tool 2.torch_geometric 3.pytorch 1.graph-tool &#xff08;1&#xff09;各种方式试过了&#xff0c;本地安装的没法正常用&#xff1a;conda本地化安装&#xff08;conda install --use-local&#xff09;&#xff0c;以 graph-tool 安装为例 - 知乎 &…

Leetcode每日一题】 二维前缀和 - 矩阵区域和(难度⭐⭐)(31)

1. 题目解析 题目链接&#xff1a;1314. 矩阵区域和 题目乍一看很晦涩难懂&#xff0c;又是大于等于又是k的 仔细分析&#xff0c;题目所说的意思就是以[i,j]为中心&#xff0c;求上下左右向外拓展k个单位的矩阵和&#xff0c;放在名为answer的矩阵中&#xff0c;最后返回ans…

Java里的泛型<T> T 的运用

因为我总是写一些CRUD的代码&#xff0c;泛型的知识都忘得差不多了&#xff0c;今天特地来写一下。 泛型可以认为是 把类型参数化&#xff0c;方便代码重用。 Double[] num new Double [] {1.11, 2.22}; String[] str new String [] {"hello", "world"…