LeetCode 908. 最小差值 I(C、C++、python)
阿新 • • 發佈:2018-12-13
908. 最小差值 I
給定一個整數陣列 A
,對於每個整數 A[i]
,我們可以選擇任意 x
滿足 -K <= x <= K
,並將 x
加到 A[i]
中。
在此過程之後,我們得到一些陣列 B
。
返回 B
的最大值和 B
的最小值之間可能存在的最小差值。
示例 1:
輸入:A = [1], K = 0 輸出:0 解釋:B = [1]
示例 2:
輸入:A = [0,10], K = 2 輸出:6 解釋:B = [2,8]
示例 3:
輸入:A = [1,3,6], K = 3 輸出:0 解釋:B = [3,3,3] 或 B = [4,4,4]
提示:
1 <= A.length <= 10000
0 <= A[i] <= 10000
0 <= K <= 10000
C
int smallestRangeI(int* A, int ASize, int K) { if(ASize<1) { return 0; } else { int M=A[0]; int m=A[0]; for(int i=0;i<ASize;i++) { if(A[i]>M) { M=A[i]; } if(A[i]<m) { m=A[i]; } } M-=K; m+=K; if(M<m) { return 0; } else { return M-m; } } }
C++
class Solution { public: int smallestRangeI(vector<int>& A, int K) { int M=*max_element(A.begin(),A.end()); int m=*min_element(A.begin(),A.end()); M-=K; m+=K; if(M<m) { return 0; } else { return M-m; } } };
python
class Solution:
def smallestRangeI(self, A, K):
"""
:type A: List[int]
:type K: int
:rtype: int
"""
M=max(A)
m=min(A)
M-=K
m+=K
if M<m:
return 0
else:
return M-m