leetcode 910 最小差值 II

    xiaoxiao2025-03-05  42

    给定一个整数数组 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 输出:3 解释:B = [4,6,3]

     

    提示:

    1 <= A.length <= 100000 <= A[i] <= 100000 <= K <= 10000

     

     

    数组中的每一个数字,必须选择+K和-K,如果都是-K或者+K肯定没有意义,在A里,肯定要有一个数就是边界,边界前加,后建,定位A1,A2,A1<A2,则最小值为min(min(A1), min(A2)),最大值为max(max(A1),max(A2))

    class Solution(object): def smallestRangeII(self, A, K): """ :type A: List[int] :type K: int :rtype: int """ A.sort() ret = A[len(A)-1] -A[0] for i in range(1, len(A)): minnum = min(A[0]+K, A[i]-K) maxnum = max(A[i-1]+K, A[-1]-K) ret = min(ret, maxnum-minnum) return ret

     

    最新回复(0)