## Algorithm

Problem Name: 910. Smallest Range II

You are given an integer array `nums` and an integer `k`.

For each index `i` where `0 <= i < nums.length`, change `nums[i]` to be either `nums[i] + k` or `nums[i] - k`.

The score of `nums` is the difference between the maximum and minimum elements in `nums`.

Return the minimum score of `nums` after changing the values at each index.

Example 1:

```Input: nums = [1], k = 0
Output: 0
Explanation: The score is max(nums) - min(nums) = 1 - 1 = 0.
```

Example 2:

```Input: nums = [0,10], k = 2
Output: 6
Explanation: Change nums to be [2, 8]. The score is max(nums) - min(nums) = 8 - 2 = 6.
```

Example 3:

```Input: nums = [1,3,6], k = 3
Output: 3
Explanation: Change nums to be [4, 6, 3]. The score is max(nums) - min(nums) = 6 - 3 = 3.
```

Constraints:

• `1 <= nums.length <= 104`
• `0 <= nums[i] <= 104`
• `0 <= k <= 104`

## Code Examples

### #1 Code Example with Javascript Programming

```Code - Javascript Programming```

``````
const smallestRangeII = function (nums, k) {
let n = nums.length
nums.sort((a, b) => a - b)
// all elements plus k or minus k
let res = nums[n - 1] - nums[0]

// left side elements plus k, right side elements minus k
let left = nums[0] + k, right = nums[n - 1] - k
for(let i = 0; i  <  n - 1; i++) {
const tmax = Math.max(right, nums[i] + k)
const tmin = Math.min(left, nums[i + 1] - k)
res = Math.min(res, tmax - tmin)
}

return res
}
``````
Copy The Code &

Input

cmd
nums = [1], k = 0

### #2 Code Example with Python Programming

```Code - Python Programming```

``````
class Solution:
def smallestRangeII(self, A, K):
A.sort()
return min([max(A[-1] - K, A[i] + K) - min(A[0] + K, A[i + 1] - K) for i in range(len(A) - 1)] + [A[-1] - A[0]])
``````
Copy The Code &

Input

cmd
nums = [1], k = 0