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) —
推荐阅读:How To Protect Your Brand On Social Media Ways to Find Out if a Ghost Blogger is Right for You Why You SHOULDN’T Use WordPress as Your Blogging Platform How to Maximize Your Freelance Profits Using the Power of Emotio What to Expect from Hiring Outsourced Content Writers Call for Minimalism: How the New Wave of Blogging Platforms Give 3 Easy Ways to Improve Writing Skills Explaining The Perfect Website Design to Non-Designers Clear Skies Ahead – The Shift to Cloud Computing Content Creation Versus Content Sharing
- 评论列表
-
- 添加评论