C++ Coding Exercise: Smallest Range of Array
- 时间:2020-10-06 11:32:45
- 分类:网络文摘
- 阅读:103 次
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) —
推荐阅读:Back to the Basics: How to Get More Twitter Followers Trump Steals Spotlight During Democratic Debate Dorsey’s 8% Twitter Layoff Finding Out Which Content Is Unacceptable For Your Website The Custom Sort String Algorithm with Count and Write Algorithms to Count the Number of Palindromic Substrings Depth First Search Algorithm to Find Leaves of a Binary Tree Understanding The Math Before Investing In Stocks Don’t Owe A Thing: Tips for Bloggers Filing Taxes The Quirky Quad Targets Millennials
- 评论列表
-
- 添加评论