Рубрики
Без рубрики

LeetCode 875. Koko есть бананы (JavaScript Solution)

Описание: Коко любит есть бананы. Есть N сваи бананов, у меня есть пили … Теги с алгоритмами, JavaScript.

Описание:

Коко любит есть бананы. Есть N сваи бананов, у меня есть сваи [I] бананы. Охранники пошли и вернутся через часы.

Коко может решить ее скорость еды бананов в час k. Каждый час она выбирает немного кучу бананов и ест k бананов из этой кучи. Если ворс имеет меньше K бананов, она ест их вместо этого и не будет есть больше бананов в течение этого часа.

Коко любит есть медленно, но все же хочет закончить все бананы перед возвращением охранников.

Верните минимальное целое число k такое, что она может съесть все бананы в часах часа.

Решение:

Сложность времени: O (NLOG (N)) Космическая сложность: O (1)

// Binary Search approach
var minEatingSpeed = function(piles, h) {
    // Check if koko can eat all the piles in h hours at his speed
    function checkCondition(speed) {
        let time = 0
        for(const pile of piles) {
            time += Math.ceil(pile / speed);
        }

        return time <= h
    }
    // Binary search
    let left = 1, right = Math.max(...piles)
    while(left < right) {
        const mid = left + Math.floor((right-left)/2)
        if(checkCondition(mid)) {
            right = mid
        } else {
            left = mid+1
        }
    }
    return left
};

Оригинал: “https://dev.to/cod3pineapple/leetcode-875-koko-eating-bananas-javascript-solution-4o2”