给你一个整数数组 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. 转变数组后最接近目标值的数组和相关推荐

  1. 365天挑战LeetCode1000题——Day 038 公交站间的距离 + 基于时间的键值存储 + 转变数组后最接近目标值的数组和 + 有界数组中指定下标处的最大值

    文章目录 1184. 公交站间的距离 代码实现(自解) 981. 基于时间的键值存储 代码实现(自解) 1300. 转变数组后最接近目标值的数组和 代码实现(自解) 1802. 有界数组中指定下标处的 ...

  2. [Leedcode][JAVA][第1300题][转变数组后最接近目标值的数组和][前缀和][二分法][暴力]

    [问题描述][中等] 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近 target ...

  3. LeetCode 1300. 转变数组后最接近目标值的数组和(二分查找)

    1. 题目 给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value , 使得将数组中所有大于 value 的值变成 value 后,数组的和 最接近 target (最接 ...

  4. 从一个数组中找出最接近目标_LeetCode每日一题 | 转变数组后最接近目标值的数组和...

    题目来源:LC1300 这道题目是一道比较经典的二分查找题. 我们注意到,当value越大时,数组之和越大,当value越小时,数组之和越小.因此,我们可以利用数组之和是value的单调递增函数这个性 ...

  5. js数组查找最接近_js查找数组所有符合条件数据 js替换数组中的某个元素

    thinkphp一大堆数据的数组怎么做为条件去查询数据库? 在后台代码中将数组assign出去,然后在模板的js代码中就可以通过{$array}调用啦. 如果我们在Action中赋值了一个name模板 ...

  6. 给定升序数组,以及目标值,查找出最接近目标值的所有数组组合

    给定升序数组,以及目标值,查找出最接近目标值的所有数组组合 解题思路: 1.已知给定的数组是升序的,需要找出和目标值target相近的一些数字的组合,我们通过先找出大于等于的一部分,把这部分先过滤,这 ...

  7. 力扣数组算法(c++)(代码随想录数组部分)

    文章一部分内容和图片引用代码随想录和力扣官方题解. 数组(C++) 考察数组的题目一般在思维上都不难,主要是考察对代码的掌控能力 数组是存放在连续内存空间上的相同类型数据的集合. 数组可以方便的通过下 ...

  8. swft c 语言 数组,如何在swift中实现数组的深拷贝

    在Objective-C中如果想将一个数组赋值给另外一个数组,同时想让两个数组之间相互独立(即改变其中的一个数组,不影响另外的一个),有很多的办法,比如我们可以直接copy,用类方法创建新数组.这样得 ...

  9. java二维数组初始化值_Java二维数组初始化的方法

    对于一个新使用的工具,我们会进行初步的初始化工具,目的是为了加上一些使用的配置.在学过了一维数组后,那么二维数组是加了一层维度的一维数组.在初始化方面,二维数组有三种方法,相信很多人只是掌握了其中的一 ...

最新文章

  1. Socket.IO 客户端 API IO
  2. vue 父刷新子_父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法...
  3. 7_12_2013 G: Mahjong problem
  4. [C++]在Visual Studio 2010中使用Google Test - 配置
  5. 学点数学(2)-特征函数
  6. (转)SpringMVC学习(九)——SpringMVC中实现文件上传
  7. 机器学习:提升算法之Adaboost
  8. mybatis --XML 映射配置文件
  9. opendrive文件结构
  10. Linux dstat监控工具简讲
  11. css建立一个简单的设备登记表,员工登记表格的CSS块
  12. 业务与信令-第6章VoLTE信令
  13. 不同方向程序员工资一览!
  14. 数据库常用字段、列属性、表类型与SQLyog工具的使用
  15. aec Gain 公式
  16. Dubbo笔记 ㉗ : 服务自省-提供者
  17. java下载basic_Java-basic(1)
  18. HTML CSS 知识点总结
  19. Sunday算法:查找字符串
  20. emqtt中auth-mysql插件与emqtt服务器连接的配置

热门文章

  1. 【汇编语言学习之路】第一章 汇编语言核心方法论
  2. 1025 反转链表 (25 分
  3. Java高级工程师必备知识!java入门书籍pdf
  4. 从新手到Flutter架构师,一篇就够!附赠课程+题库
  5. [LeetCode] Two Sum
  6. 2018.09.16 loj#10243. 移棋子游戏(博弈论)
  7. 由浅入深理解----java反射技术
  8. PHP面向对象(三)
  9. javascript/jquery获取图片的原始大小
  10. C#生成安装文件后自动附加数据库的思路跟算法