【題解】LeetCode 1675. Minimize Deviation in Array

【題目敘述】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;
    }
};
分享本文 Share with friends