leetcode1300. 转变数组后最接近目标值的数组和
给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target (最接近表示两者之差的绝对值最小)。
如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。
请注意,答案不一定是 arr 中的数字。
示例 1:
输入:arr = [4,9,3], target = 10
输出:3
解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近 target 的方案。
代码
class Solution {public int findBestValue(int[] arr, int target) {int n=arr.length,l=0,r=0;for(int c:arr){r= Math.max(r,c);}while (l<=r)//二分查找{int mid=(r-l)/2+l;int sum=0;for(int c:arr)//计算数组和{if(c>mid)sum+=mid;else sum+=c;}if(sum==target)return mid;else if(sum>target)r=mid-1;else l=mid+1;}int lSum=0,rSum=0;//比较左右区间,找出更接近目标值的点for(int c:arr){if(c>l)lSum+=l;else lSum+=c;if(c>r)rSum+=r;else rSum+=c;}return Math.abs(target-rSum)> Math.abs(target-lSum)?l:r;}
}
leetcode1300. 转变数组后最接近目标值的数组和相关推荐
- 365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值
文章目录 1184. 公交站间的距离 代码实现(自解) 981. 基于时间的键值存储 代码实现(自解) 1300. 转变数组后最接近目标值的数组和 代码实现(自解) 1802. 有界数组中指定下标处的 ...
- [Leedcode][JAVA][第1300题][转变数组后最接近目标值的数组和][前缀和][二分法][暴力]
[问题描述][中等] 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target ...
- LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)
1. 题目 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value , 使得将数组中所有大于 value 的值变成 value 后,数组的和 最接近 target (最接 ...
- 从一个数组中找出最接近目标_LeetCode每日一题 | 转变数组后最接近目标值的数组和...
题目来源:LC1300 这道题目是一道比较经典的二分查找题. 我们注意到,当value越大时,数组之和越大,当value越小时,数组之和越小.因此,我们可以利用数组之和是value的单调递增函数这个性 ...
- js数组查找最接近_js查找数组所有符合条件数据 js替换数组中的某个元素
thinkphp一大堆数据的数组怎么做为条件去查询数据库? 在后台代码中将数组assign出去,然后在模板的js代码中就可以通过{$array}调用啦. 如果我们在Action中赋值了一个name模板 ...
- 给定升序数组,以及目标值,查找出最接近目标值的所有数组组合
给定升序数组,以及目标值,查找出最接近目标值的所有数组组合 解题思路: 1.已知给定的数组是升序的,需要找出和目标值target相近的一些数字的组合,我们通过先找出大于等于的一部分,把这部分先过滤,这 ...
- 力扣数组算法(c++)(代码随想录数组部分)
文章一部分内容和图片引用代码随想录和力扣官方题解. 数组(C++) 考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力 数组是存放在连续内存空间上的相同类型数据的集合. 数组可以方便的通过下 ...
- swft c 语言 数组,如何在swift中实现数组的深拷贝
在Objective-C中如果想将一个数组赋值给另外一个数组,同时想让两个数组之间相互独立(即改变其中的一个数组,不影响另外的一个),有很多的办法,比如我们可以直接copy,用类方法创建新数组.这样得 ...
- java二维数组初始化值_Java二维数组初始化的方法
对于一个新使用的工具,我们会进行初步的初始化工具,目的是为了加上一些使用的配置.在学过了一维数组后,那么二维数组是加了一层维度的一维数组.在初始化方面,二维数组有三种方法,相信很多人只是掌握了其中的一 ...
最新文章
- Socket.IO 客户端 API IO
- vue 父刷新子_父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法...
- 7_12_2013 G: Mahjong problem
- [C++]在Visual Studio 2010中使用Google Test - 配置
- 学点数学(2)-特征函数
- (转)SpringMVC学习(九)——SpringMVC中实现文件上传
- 机器学习:提升算法之Adaboost
- mybatis --XML 映射配置文件
- opendrive文件结构
- Linux dstat监控工具简讲
- css建立一个简单的设备登记表,员工登记表格的CSS块
- 业务与信令-第6章VoLTE信令
- 不同方向程序员工资一览!
- 数据库常用字段、列属性、表类型与SQLyog工具的使用
- aec Gain 公式
- Dubbo笔记 ㉗ : 服务自省-提供者
- java下载basic_Java-basic(1)
- HTML CSS 知识点总结
- Sunday算法:查找字符串
- emqtt中auth-mysql插件与emqtt服务器连接的配置