LeetCode如何解决转变数组后最接近目标值的数组和问题
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,这篇文章将为大家详细讲解有关LeetCode如何解决转变数组后最接近目标值的数组和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1题目描述给定一个整数数组 ar
千家信息网最后更新 2025年12月03日LeetCode如何解决转变数组后最接近目标值的数组和问题思路:前缀和,单调性 本题首先要对题目有深入的理解。对于arr[i],数组和S=sum(arr[0:i]+arr[i]*(len(arr)-i)),因此当对arr进行排序后,发现S是关于arr的单调函数,
因此当出现S>=target时,意味着目标值在(arr[i-1],arr[i]]之间。也就是说在(arr[i-1],arr[i]]之间存在一个数x,使得sum(arr[0:i]+x*(len(arr)-i))=target。此时求出的x可能是小数,因为要求满足条件的最小整数,所以根据小数具体值判断上取整还是下取整即可 (类似四舍五入,但当小数部分是0.5时要下取整。找例子具体计算一下就可以理解) 。如果S始终小于target,则根据题目要求返回arr中的最大值。
这篇文章将为大家详细讲解有关LeetCode如何解决转变数组后最接近目标值的数组和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1
题目描述
给定一个整数数组 arr 和一个目标值 target ,返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。如输入arr = [4,9,3], target = 10,输出3,输入arr=[60864,25176,27249,21296,20204],target=56803,输出11361。
2
题解
class Solution: def findBestValue(self, arr: List[int], target: int) -> int: arr.sort() pre = 0 for i in range(0,len(arr)): if pre+arr[i]*(len(arr)-i)>=target: x = (target-pre)/(len(arr)-i) if x%1>0.5: return ceil(x) else : return floor(x) pre += arr[i] return arr[-1]
关于"LeetCode如何解决转变数组后最接近目标值的数组和问题"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
数组
目标
目标值
整数
最小
小数
篇文章
题目
问题
单调
之间
更多
输入
输出
不错
实用
最大
四舍五入
个数
也就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
梦幻西游想转的服务器不存在咋办
长期从事网络安全 授课
gin框架数据库操作
如何做一个人才数据库
c 南京软件开发招聘信息
数据库可实现什么检索
微信微博刷数据库
成都子成网络技术
职高计算机网络技术课程
陕西等离子套料软件开发商
计量 网络安全
梦想灵谷宝可梦服务器下载
软件开发主要有哪些编程语言
论网络技术对政府政策的影响
大华平台服务器时间怎么调
国家网络安全局总部地址
松滋软件开发招聘信息
播控硬件服务器设计流程
征途数据库名
网络安全校园日手抄报5年级
星巴克数据库系统
辽宁移动城管软件开发系统
创建和管理数据库的实验分析
怎么创造服务器教程
网络技术基础课程
大华平台服务器时间怎么调
戴尔服务器软件风扇设置教程
高校实验室管理软件开发
软件开发运算溢出
数据库表存储