给你一个整数数组 A,请你给数组中的每个元素 A[i] 都加上一个任意数字 x (-K <= x <= K),从而得到一个新数组 B 。
返回数组 B 的最大值和最小值之间可能存在的最小差值。
时间复杂度:O(N) 空间复杂度:O(1) 我们只需要找到最大值与最小值的差,若大于2k则取max-min-2k,否则差值可通过调节k值取0
class Solution { public int smallestRangeI(int[] A, int K) { int min = A[0]; int max = A[0]; for(int i : A){ min = Math.min(i, min); max = Math.max(i, max); } return Math.max(0, max - min - 2 * K); } }时间复杂度:O(NlogN) 空间复杂度:O(1)
class Solution { public int smallestRangeI(int[] A, int K) { Arrays.sort(A); int min = A[0]; int max = A[A.length - 1]; return Math.max(0, max - min - 2 * K); } }