这是悦乐书的第348次更新,第372篇原创
java
今天介绍的是LeetCode算法题中Easy级别的第213题(顺位题号是908)。给定一个整数数组A,对于每一个整数A[i],咱们能够选择任何x,其中-K <= x <= K,并将x的值加到A[i]上。在这个过程以后,A变成了新数组B.算法
返回B的最大值和B的最小值之间的最小可能差值。例如:数组
输入:A = [1],K = 0
输出:0
说明:B = [1]数据结构
输入:A = [0,10],K = 2
输出:6
说明:B = [2,8]code
输入:A = [1,3,6],K = 3
输出:0
说明:B = [3,3,3]或B = [4,4,4]class
注意:数据结构与算法
1 <= A.length <= 10000数据
0 <= A [i] <= 10000co
0 <= K <= 10000
return
题目要求咱们计算B数组中最大值和最小值的最小可能差值,而B数组是由A数组中每个元素加上K后获得的。
要想最大值和最小值的差值最小,即最大值、最小值无限接近,最理想状态是最大值等于最小值,其差值为0。
因此,咱们只须要找到A里面的最大值、最小值,将最大值减去x的最大值,即K,将最小值加上x的最大值,让最大值、最小值的数值更加接近。
另外,最大值和最小值的最小可能差值是不能小于0的,最小只能到0。
public int smallestRangeI(int[] A, int K) { int max = -1, min = 10001; for (int num : A) { if (num > max) { max = num; } if (num < min) { min = num; } } if ((max-K)-(min+K) < 0) { return 0; } return (max-K)-(min+K); }
算法专题目前已连续日更超过六个月,算法题文章216+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。
以上就是所有内容,若是你们有什么好的解法思路、建议或者其余问题,能够下方留言交流,点赞、留言、转发就是对我最大的回报和支持!