leetcode:908. 最小差值 I

it2026-01-10  7

给你一个整数数组 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); } }
最新回复(0)