15 Jun 2024C++ / Python / TypeScriptEasy

First Bad Version

Collected C++, Python, TypeScript solutions for first bad version. Add a dedicated write-up later if you want deeper notes.

auto-generated entry for First Bad Version. the solution files are available below.

solution files

  • C++ first-bad-version/synced-solution.cpp
  • Python first-bad-version/synced-solution.py
  • TypeScript first-bad-version/synced-solution.ts

Solution files

Pythonfirst-bad-version/synced-solution.py
def isBadVersion(version):
    pass

def firstBadVersion(n):
    left, right = class="syntax-number">1, n
    while left < right:
        mid = (left + right) class=class="syntax-string">"syntax-comment">// class="syntax-number">2
        if isBadVersion(mid):
            right = mid
        else:
            left = mid + class="syntax-number">1
    return left
C++first-bad-version/synced-solution.cpp
class Solution {
public:
    int firstBadVersion(int n) {
        int left = class="syntax-number">1, right = n;
        while (left < right) {
            int mid = left + (right - left) / class="syntax-number">2;
            if (isBadVersion(mid)) {
                right = mid;
            } else {
                left = mid + class="syntax-number">1;
            }
        }
        return left;
    }
};
TypeScriptfirst-bad-version/synced-solution.ts
function solution(isBadVersion: (version: number) => boolean) {
    return function(n: number): number {
        let left = class="syntax-number">1, right = n;
        while (left < right) {
            const mid = Math.floor(left + (right - left) / class="syntax-number">2);
            if (isBadVersion(mid)) {
                right = mid;
            } else {
                left = mid + class="syntax-number">1;
            }
        }
        return left;
    };
}