原題地址: https://leetcode-cn.com/probl...
原題描述稍微有點繞,用更加通俗易懂的語言描述就是:javascript
給出一個整數k
,找到一個整數x
且整數x
知足-k <= x <= k
,與A[i]
相加以後獲得數組B
。咱們獲得的就是數組B
中最大值與最小值的 最小差值
要獲得最大值與最小值的最小差值,那麼就應該讓最大值儘量小,最小值儘量大。前端
令 a
爲最大值,b
爲最小值,那麼應該知足: a - k
儘量小,b + k
儘量大
因此:最小差值 s = (a - k) - (b + k) = a - b - 2k >= 0
java
/** * @param {number[]} A * @param {number} K * @return {number} */ var smallestRangeI = function(A, K) { const min = Math.min(...A) const max = Math.max(...A) return Math.max(0, max - min - 2 * K) };
O(n)
O(1)
一直在 LeetCode 上刷題,以前還加入了組織,有興趣加入一塊兒學習的同窗能夠在下方留言或者關注個人微信公衆號「tony老師的前端補習班」並在後臺留言,能夠進羣跟大佬們一塊兒學習。git