Solution 3 – Binary search
func firstBadVersion(n int) int {
start:=1
end:=n
for start<=end{
mid:=(start+end)/2
if isBadVersion(mid){
// check left
end=mid-1
} else {
start=mid+1
}
}
return start
}

Solution 2 – Binary search (extra element)
func firstBadVersion(n int) int {
var start,end,minBad int
end=n
minBad=n/2
for start<=end{
if isBadVersion(minBad){
// check left
end=minBad-1
} else {
start=minBad+1
}
minBad=start+(end-start)/2
}
return minBad
}

Solution 3 – Brute Force
func firstBadVersion(n int) int {
var i int = 1
for i=1;i<=n;i++{
if(isBadVersion(i)){
return i
}
}
return n
}

Leave a Reply