<jupyter_start><jupyter_text>问题描述        给定一个数组A的整数，对于每个整数A[i]，        我们需要选择两种  x = -K 或x = K，并添加x到 A[i] (only once)        经过这个过程，我们有了一些array B。        求让 max(B) - min(B) 的最小值          例题1：         Input: A = [1], K = 0         Output: 0         Explanation: B = [1], 不管如何加减，A的最大值和最小值都是1，差值为0          例题2：         Input: A = [0,10], K = 2         Output: 6         Explanation: B = [2,8]            例题3：          Input: A = [1,3,6], K = 3          Output: 3          Explanation: B = [4,6,3]<jupyter_code>class Solution:
    def smallestRangeII(self, A, K: int) -> int:
        # 可以简化为每个数值必须加上0或者加上2*K。
        # 先对数组进行排序，然后从小到大每个元素依次加上2*K，更新最大值，最小值和差值，
        if len(A) <= 1: return 0
        if K == 0: return max(A) - min(A)
        A.sort()
        res = A[-1] - A[0] # 当前的最大差异
        for i in range(len(A) - 1):
            big = max(A[-1], A[i] + 2 * K)
            small = min(A[i + 1], A[0] + 2 * K)
            res = min(res, big - small)
        return res
A_ = [6,4,10]
K_ = 5
solution = Solution()
solution.smallestRangeII(A_, K_)<jupyter_output>4 10
6 14
{'fraction_non_alphanumeric': 0.14925373134328357, 'fraction_numerical': 0.0457089552238806, 'mean_word_length': 1.7512820512820513, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '271517', 'license': 'Apache-2.0', 'n_tokens_mistral': 529, 'n_tokens_neox': 525, 'n_words': 108, 'path': 'Greedy/previous/910. Smallest Range II.ipynb', 'repo_name': 'YuHe0108/Leetcode', 'size': '1072'}