LeetCode #1675

Minimize Deviation in Array

1개의 풀이 · C++

문제 원문 보기 ↗

SOLUTION INFO

C++ · main.cpp

main.cpp
class Solution {
public:
    int minimumDeviation(vector<int>& nums) {
        priority_queue<int> pq;
        int ans = INT_MAX, mn = INT_MAX;
        for(int &x: nums) {
            if(x & 1) x <<= 1;
            pq.push(x);
            mn = min(mn, x);
        }
        while(pq.top() % 2 == 0) {
            int x = pq.top(); pq.pop();
            ans = min(ans, x - mn);
            mn = min(mn, x / 2);
            pq.push(x / 2);
        }
        ans = min(ans, pq.top() - mn);
        return ans;
    }
};
const auto init = []() {
    std::cin.tie(nullptr);
    std::cout.tie(nullptr);
    std::ios_base::sync_with_stdio(false);
    return 0;
}();

SOLUTION DESCRIPTION

풀이 설명

등록된 풀이 설명이 없습니다.