[Leetcode] 2141. Maximum Running Time of N Computers

RexiaN·2025년 12월 1일
function maxRunTime(n: number, batteries: number[]): number {
    const sumBatteryPower = batteries.reduce((sum, power) => sum + power, 0);

    let left = 0;
    
    let right = Math.floor(sumBatteryPower / n);

    let maxTime = 0;

    const canRun = (T) => {

        let totalAvailableEnergy = 0;

        for (const batteryPower of batteries) {
            totalAvailableEnergy += Math.min(batteryPower, T);
        }

        return totalAvailableEnergy >= n * T;
    };

    while (left <= right) {
        const mid = left + Math.floor((right - left) / 2);

        if (canRun(mid)) {
            maxTime = mid;
            left = mid + 1;
        } else {
            right = mid - 1;
        }
    }

    return maxTime;
};

profile
Don't forget Rule No.1

0개의 댓글