返回顶部

[908] Smallest Range I

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]
思路:
很明显答案就是容器里最大值与最小值的差值,如果这个值小于2K,那么结果就为0,当然需要注意只有一个元素的情况。这才是名副其实的EZ啊。
Solution:
 1 class Solution {
 2 public:
 3     int smallestRangeI(vector<int>& A, int K) 
 4 {
 5         sort(A.begin(),A.end());
 6         int size = A.size();
 7         int result = 0;
 8         if(size>1)
 9         {
10           result = A[size-1] - A[0];
11         }
12         result -=2*K;
13         if(result<0)
14         {
15             result = 0;
16         }
17         return result;
18     }
19 };

直接调用stl自带的sort排序,简直不用太爽。哈哈哈

posted @ 2019-07-09 01:20  Swetchine  阅读(121)  评论(0编辑  收藏  举报