LeetCode如何解决转变数组后最接近目标值的数组和问题
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章将为大家详细讲解有关LeetCode如何解决转变数组后最接近目标值的数组和问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1题目描述给定一个整数数组 ar
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
服务器开户有没有风险
中经网软件开发有限公司
网络安全知识竞赛90分
固镇网络技术及信息安全工程师
博客园个人云服务器
阿里云网络技术专家楼燕华
河南高配置服务器虚拟主机
网络安全的说法错误的是
面向对象技术 数据库访问
域模式下文件服务器管理
邢台盘古网络技术服务
安兔跑分数据库在哪里
南京灵创网络技术有限公司客服
网络安全公司的做法
网络安全归根结底是什么感觉
负责统筹协调网络安全
京东互联网科技股
西安四叶草网络安全有限公司
永7服务器
网络技术中的设备类型
危机值记录于数据库保存几年
民政局网络安全领导小组
数据库怎么授予用户权限
检查数据库服务是否开启
如何查看管家婆数据库用户名
中泽科技互联网移动流量卡
数据库AES解密工具
网络安全专业哪个大学最好
服务器 3d模型
白话网络安全