LeetCode-908. 最小差值 I

给定一个整数数组 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. 1 <= A.length <= 10000
  2. 0 <= A[i] <= 10000

0 <= K <= 10000

 1 class Solution {
 2 public:
 3     int smallestRangeI(vector<int>& A, int K) {
 4         int n = A.size();
 5         int ans = 0;
 6         int sma = A[0], big = A[0];
 7         for(int i = 1;i < n;i ++){
 8             if(sma > A[i]){
 9                 sma = A[i];
10             }
11             if(big < A[i]){
12                 big = A[i];
13             }
14         }
15         ans = big - sma;
16         if(ans < 2*K){
17             return 0;
18         }
19         else{
20             return ans - 2*K;
21         }
22     }
23 };

解题思路:实际上是求数组A最大值与最小值之差与2K之间的最小差值。

扫描二维码关注公众号,回复: 3530264 查看本文章

代码用时:16ms。

猜你喜欢

转载自www.cnblogs.com/99xiaobei/p/9771819.html