LeetCode #908 Smallest Range I 最小差值 I

908 Smallest Range I 最小差值 I

Description:
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:

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

题目描述:
给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中。

在此过程之后,我们得到一些数组 B。

返回 B 的最大值和 B 的最小值之间可能存在的最小差值。

示例 :

示例 1:

输入:A = [1], K = 0
输出:0
解释:B = [1]

示例 2:

输入:A = [0,10], K = 2
输出:6
解释:B = [2,8]

示例 3:

输入:A = [1,3,6], K = 3
输出:0
解释:B = [3,3,3] 或 B = [4,4,4]

提示:

1 <= A.length <= 10000
0 <= A[i] <= 10000
0 <= K <= 10000

思路:

差距最大的是 max(A)和 min(A), 可以分别向中间靠近
那么就说 max(A) - K和 min(A) + K之间的差距
实际上返回的是 0和 max(A) - min(A) - 2 * K的较大值
时间复杂度O(n), 空间复杂度O(1)

代码:
C++:

class Solution 
{
public:
    int smallestRangeI(vector<int>& A, int K) 
    {
        return max(*max_element(A.begin(), A.end()) - *min_element(A.begin(), A.end()) - 2 * K, 0);
    }
};

Java:

class Solution {
    public int smallestRangeI(int[] A, int K) {
        int minA = A[0], maxA = A[0];
        for (int num : A) {
            minA = Math.min(minA, num);
            maxA = Math.max(maxA, num);
        }
        return Math.max(maxA - minA - 2 * K, 0);
    }
}

Python:

class Solution:
    def smallestRangeI(self, A: List[int], K: int) -> int:
        return max(max(A) - min(A) - 2 * K, 0)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,417评论 0 2
  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,834评论 0 5
  • thiele插值算法 1点插值算法 function [C,c]=thiele(X,Y,Z)%X为插值点横坐标,Y...
    00crazy00阅读 2,051评论 0 4
  • 1、在一个场域,李小花老师讲课,讲得特别兴奋,然后来了一句,2分钟的时间,就给3个名额,9800元《成交策略》免费...
    郝志阳阅读 769评论 0 1
  • 文/一枚回形针 这次,我家没有种金针菇。 金针菇买回来后需用清水清洗干净,切去头部,这样烤起来才能使金针菇受热更均...
    zy子悦阅读 929评论 0 4