這是悅樂書的第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+篇,公衆號對話框回覆【數據結構與算法】、【算法】、【數據結構】中的任一關鍵詞,獲取系列文章合集。
以上就是所有內容,若是你們有什麼好的解法思路、建議或者其餘問題,能夠下方留言交流,點贊、留言、轉發就是對我最大的回報和支持!