【題目敘述】https://leetcode.com/problems/minimize-deviation-in-array/
class Solution {
public:
int minimumDeviation(vector<int>& v) {
priority_queue<int>pq;
int mn = 2e9;
for (int i = 0; i < v.size(); i++){
if (v[i] % 2 == 1) v[i] *= 2;
mn = min(mn, v[i]);
pq.push(v[i]);
}
while (pq.top() % 2 == 0 && pq.top()/2 >= mn){
int x = pq.top();
pq.pop();
while (x % 2 == 0 && x/2 >= mn){
x /= 2;
}
pq.push(x);
}
int ans = pq.top()-mn;
while (pq.top()%2 == 0){
int x = pq.top();
pq.pop();
x /= 2;
mn = min(mn, x);
pq.push(x);
ans = min(ans, pq.top()-mn);
}
return ans;
}
};