LeetCode题解1300. 转变数组后最接近目标值的数组和

给你一个整数数组 arr 和一个目标值 target ,请你返回一个整数 value ,使得将数组中所有大于 value 的值变成 value 后,数组的和最接近  target (最接近表示两者之差的绝对值最小)。

如果有多种使得和最接近 target 的方案,请你返回这些整数中的最小值。

请注意,答案不一定是 arr 中的数字。

 

示例 1:

输入:arr = [4,9,3], target = 10

输出:3

解释:当选择 value 为 3 时,数组会变成 [3, 3, 3],和为 9 ,这是最接近 target 的方案。

示例 2:

输入:arr = [2,3,5], target = 10

输出:5

示例 3:

输入:arr = [60864,25176,27249,21296,20204], target = 56803

输出:11361

 

提示:

1 <= arr.length <= 10^4

1 <= arr[i], target <= 10^5

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/sum-of-mutated-array-closest-to-target

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题解:# 二分查找

很容易看出这是一个二分查找,和[猴子吃香蕉](https://github.com/azl397985856/leetcode/blob/master/problems/875.koko-eating-bananas.md) 几乎一样。类似的题还有很多,比如[1011. 在 D 天内送达包裹的能力](https://github.com/azl397985856/leetcode/blob/master/problems/1011.capacity-to-ship-packages-within-d-days.md)

我们的核心目标是找出0 - max(arr) 之前的一个数字,这个数字可以使得我们的数组和距离target最近。这不就是有序序列查找指定值么?

# Python Code

```python
class Solution:
def findBestValue(self, arr: List[int], target: int) -> int:
l = 0
r = 2 * max(arr)
def sumNotGreater(v):
res = 0
for num in arr:
if num > v:
res += v
else:
res += num
return res

while l < r:
mid = (l + r) // 2
s = sumNotGreater(mid)
if s < target:
l = mid + 1
else:
r = mid

return l - 1 if abs(sumNotGreater(l - 1) - target) <= abs(sumNotGreater(l) - target) else l
```

LeetCode题解计算机为什么是基于二进制的?

可以是三进制么?二进制有什么好处?题解:为什么叫电子计算机?算盘应该没有二进制

LeetCode题解深度优先遍历和回溯的关系?

深度优先遍历的范围更大还是回溯的范围更大?为什么?题解:我的理解是:dfs是回溯思想的一种体现- 回溯:是在整个搜索空间中搜索出可行解,在搜索过程中不断剪枝回退,这是回溯的思想,这个搜索空间并没有限制于特定的数据结构。- dfs:dfs是指特定的数据结构中如图,树(特殊的图)中搜索答案,范围限制在了特定的数据结构。个人拙见。

LeetCode题解盲人买袜子。

他们都各自买了两对黑袜和两对白袜,八对袜子的布质、大小完全相同,而每对袜子都有一张商标纸连着。两位盲人不小心将八对袜子混在一起。他们每人怎样才能取回黑袜和白袜各两对呢?题解:暴力破解, 把袜子都拆开 一人一只 哈哈

LeetCode题解10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。

10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。要求用程序模拟十万次,暴力求出该概率来自:字节跳动 算法工程师一面的第一题 (3月30日,60分钟,牛客网视频面)https://www.nowcoder.com/discuss/395924

LeetCode题解微信红包

微信红包 如何分配 让每个人在数学期望上是一样的?在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。 它反映随机变量平均取值的大小。 需要注意的是,期望值并不一定等同于常识中的“期望”——“期望值”也许与每一个结果都不相等。 期望值是该变量输出值的平均数。