LeetCode如何解决转变数组后最接近目标值的数组和问题
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,这篇文章将为大家详细讲解有关LeetCode如何解决转变数组后最接近目标值的数组和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1题目描述给定一个整数数组 ar
千家信息网最后更新 2025年02月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安全错误
数据库的锁怎样保障安全
郑州物流软件开发价格
桌面运维平台软件开发
nfs服务器有读写权限
数据库查询数据之和语句
智能烟气采样器项目数据库
创建简易的mysql数据库
系统平台管理服务器
移动的网络技术发展
软件开发人员有哪些晋升方向
校园网网络安全现状分析
开源内存数据库
网络安全宣传晚会视频
数据库安全性控制基本方法
BACHELOR翻译软件开发
国内互联网科技公司标志
与谷歌服务器连接失败原因
sql数据库客户端许可证价格
医院数据库安全审计 杭州
网络技术应用工作怎么样
科研数据库使用现状调查
php连接access数据库
用链表读写文件数据库
mdb 数据库恢复
互联网教育行业科技发展状况
服务器上行下行带宽对等吗
得物订单服务器
与谷歌服务器连接失败原因
江西服务器管理软件云主机
常用的几种无线网络技术
服务器网络中间断