LeetCode #3356

Zero Array Transformation II

1개의 풀이 · C++

문제 원문 보기 ↗

SOLUTION INFO

C++ · main.cpp

main.cpp
class Solution {
public:
    int minZeroArray(vector<int>& nums, vector<vector<int>>& queries) {
        int N = (int)nums.size();
        int Q = (int)queries.size();
        int l = 0, r = Q;
        while(l <= r) {
            int mid = (l + r) / 2;
            bool flag = true;
            vector<int> P(N + 1);
            for(int i = 0; i < mid; ++i) {
                int l = queries[i][0], r = queries[i][1];
                P[l] += queries[i][2];
                P[r + 1] -= queries[i][2];
            }
            for(int i = 1; i < N; ++i) P[i] += P[i - 1];
            for(int i = 0; i < N; ++i) flag &= nums[i] <= P[i];
            if(flag) r = mid - 1;
            else l = mid + 1;
        }
        return l > Q ? -1 : l;
    }
};

SOLUTION DESCRIPTION

풀이 설명

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