1. 程式人生 > >leetcode (Smallest Range I)

leetcode (Smallest Range I)

Title: Smallest Range I    908

Difficulty:Easy

原題leetcode地址:   https://leetcode.com/problems/smallest-range-i/

 

1.  見程式碼註釋

時間複雜度:O(n),一次一層for迴圈,最長遍歷長度為陣列長度n。

空間複雜度:O(1),沒有申請額外空間。

    /**
     * 如果A中最大值減去最小值等於小於2K,最後B中的數都能是一樣的,這樣返回的為0
     * 如果A中最大值減去最小值大於2K,A中最小值加上負K,最大值加上K,然後做差值
     * @param A
     * @param K
     * @return
     */
    public static int smallestRangeI(int[] A, int K) {

        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;

        for (int a : A) {
            min = Math.min(min, a);
            max = Math.max(max, a);
        }

        return max - min > 2 * K ? max - min - 2 * K : 0;

    }