LeetCode: Smallest Range I Posted on September 28, 2018July 26, 2020 by braindenny Smallest Range I Similar Problems: LeetCode: Smallest Range II CheatSheet: Leetcode For Code Interview CheatSheet: Common Code Problems & Follow-ups Tag: #interval Given an array A of integers, for each integer A[i] we may choose any x with -K <= x <= K, and add x to A[i]. After this process, we have some array B. Return the smallest possible difference between the maximum value of B and the minimum value of B. Example 1: Input: A = [1], K = 0 Output: 0 Explanation: B = [1] Example 2: Input: A = [0,10], K = 2 Output: 6 Explanation: B = [2,8] Example 3: Input: A = [1,3,6], K = 3 Output: 0 Explanation: B = [3,3,3] or B = [4,4,4] Note: 1 <= A.length <= 10000 0 <= A[i] <= 10000 0 <= K <= 10000 Github: code.dennyzhang.com Credits To: leetcode.com Leave me comments, if you have better ways to solve. Solution: // https://code.dennyzhang.com/smallest-range-i // Basic Ideas: // Find the min and max. // Then compare [min, min+k] with [max-k, max] // Complexity: Time O(n), Space O(1) func smallestRangeI(A []int, K int) int { min, max := A[0], A[0] for i:=1; i<len(A); i++ { if A[i]>max { max=A[i] } if A[i]<min { min=A[i] } } v:= max-min-2*K if v <= 0 { return 0 } return v } Post Views: 0