C++ Coding Exercise: Smallest Range of Array
- 时间:2020-10-06 11:32:45
- 分类:网络文摘
- 阅读:131 次
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
We need to find out the max and min number of the array first using O(N) approach – e.g. using std::accumulate method to do this in one line.
Then, the smallest range must be the difference between the max-k, and min+k, if the min+k is bigger than max-k, the difference of the smallest range is zero because we can always choose a number that is smaller than K to make the difference zero (greedy algorithm).
1 2 3 4 5 6 7 8 | class Solution { public: int smallestRangeI(vector<int> & A, int K) { int _max = std::accumulate(begin(A), end(A), A[0], [](auto &a, auto &b) { return max(a, b); }); int _min = std::accumulate(begin(A), end(A), A[0], [](auto &a, auto &b) { return min(a, b); }); return max(0, _max - K - (_min + K)); } }; |
class Solution {
public:
int smallestRangeI(vector<int> & A, int K) {
int _max = std::accumulate(begin(A), end(A), A[0], [](auto &a, auto &b) { return max(a, b); });
int _min = std::accumulate(begin(A), end(A), A[0], [](auto &a, auto &b) { return min(a, b); });
return max(0, _max - K - (_min + K));
}
};The above C++ approach takes O(N) time, and O(1) space.
–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:5 Ways to Use Your Smartphone to Build a Better Blog The Most Expensive Domain Sales Ever 15 Ways Of How Not To Kill Your Leadership Authority Study Shows Strong Growth of Tech Inventions to Fight Climate Ch Interested in Bitcoins? Here are 10 Blogs You Need to Check Out Your Blog’s Been Hacked! Here’s What You Need to Do #DiningForBrussels: How Belgium Is Fighting Terrorism With A For Many WordPress Site Hackings Caused To These Plugins GoDaddy Company Now Hosts New Enterprise-Level Plans Using Reduce to Count the Array in Javascript
- 评论列表
-
- 添加评论