There is a bug in your code. You’re not certain which commit number introduced the bug into the repo, but you know for certain an earlier commit number where it didn’t exist yet. A magical function, isBad(), determines if the commit is bad or not.

func isBad(commit: Int) -> Bool

Given isBad, determine which commit introduced the bug.

For n commits, this can be solved with a binary search in O(log n). Careful not to make an off-by-one mistake and return the bad commit rather than the commit preceding it.

func badCommit(pastCommit: Int, currentCommit: Int) -> Int { var left = pastCommit var right = currentCommit var mid = (left + right) / 2 while (left < right) { if !isBad(commit: mid) { left = mid + 1 } else { right = mid } mid = (left + right) / 2 } return right } badCommit(pastCommit: 110, currentCommit: 334)