Minimize Deviation in Array LeetCode solution in C++

1
// ��������Please upvote if it helps ��������
2
class Solution {
3
public:
4
int minimumDeviation(vector<int> &nums) {
5
set<int> s;
6

7
// Storing all elements in sorted order
8
// insert even directly and odd with one time multiplication
9
// and it will become even
10
for (int i = 0; i < nums.size(); ++i) {
11
if (nums[i] % 2 == 0)
12
s.insert(nums[i]);
13

14
else
15
// Odd number are transformed
16
// using 2nd operation
17
s.insert(nums[i] * 2);
18
}
19

20
// maximum - minimun
21
int diff = *s.rbegin() - *s.begin();
22

23
// run the loop untill difference is minimized
24
while (*s.rbegin() % 2 == 0) {
25
// Maximum element of the set
26
int x = *s.rbegin();
27
s.erase(x);
28
// remove begin element and inserted half of it for minimizing
29
s.insert(x / 2);
30

31
diff = min(diff, *s.rbegin() - *s.begin());
32
}
33
return diff;
34
}
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0