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

Лецкод 278. Первая плохая версия (JavaScript Solution)

Описание: Вы являетесь менеджером по продукту и в настоящее время ведущую команду для разработки нового продукта … Теги с алгоритмами, JavaScript.

Описание:

Вы являетесь менеджером по продукту и в настоящее время ведущую команду для разработки нового продукта. К сожалению, последняя версия вашего продукта не проходит проверку качества. Поскольку каждая версия разработана на основе предыдущей версии, все версии после плохой версии также плохие.

Предположим, у вас есть n версий [1, 2, …, n] и вы хотите узнать первый плохой, который вызывает все следующие, чтобы быть плохим.

Вам дан API Bool ISBADVERSION (версия), которая возвращает, плохо ли версия. Внедрить функцию, чтобы найти первую плохую версию. Вы должны минимизировать количество вызовов на API.

Решение:

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

// Binary search
var solution = function(isBadVersion) {
    /**
     * @param {integer} n Total versions
     * @return {integer} The first bad version
     */
    return function(n) {
        // Min left start is 1
        let left = 1, right = n
        while(left < right) {
            const mid = left + Math.floor((right-left)/2)
            if(isBadVersion(mid)) {
                right = mid
            } else {
                left = mid + 1
            }
        }
        return left
    };
};

Оригинал: “https://dev.to/cod3pineapple/leetcode-278-first-bad-version-javascript-solution-4em2”