# The isBadVersion API is already defined for you.# def isBadVersion(version: int) -> bool:classSolution:deffirstBadVersion(self,n:int)->int:l,r=1,nwhilel<r:mid=(l+r)>>1ifisBadVersion(mid):r=midelse:l=mid+1returnl
1 2 3 4 5 6 7 8 91011121314151617
/* The isBadVersion API is defined in the parent class VersionControl. boolean isBadVersion(int version); */publicclassSolutionextendsVersionControl{publicintfirstBadVersion(intn){intl=1,r=n;while(l<r){intmid=(l+r)>>>1;if(isBadVersion(mid)){r=mid;}else{l=mid+1;}}returnl;}}
1 2 3 4 5 6 7 8 9101112131415161718
// The API isBadVersion is defined for you.// bool isBadVersion(int version);classSolution{public:intfirstBadVersion(intn){intl=1,r=n;while(l<r){intmid=l+(r-l)/2;if(isBadVersion(mid)){r=mid;}else{l=mid+1;}}returnl;}};
1 2 3 4 5 6 7 8 91011121314151617181920
/** * Forward declaration of isBadVersion API. * @param version your guess about first bad version * @return true if current version is bad * false if current version is good * func isBadVersion(version int) bool; */funcfirstBadVersion(nint)int{l,r:=1,nforl<r{mid:=(l+r)>>1ifisBadVersion(mid){r=mid}else{l=mid+1}}returnl}
1 2 3 4 5 6 7 8 9101112131415161718192021
/** * The knows API is defined in the parent class Relation. * isBadVersion(version: number): boolean { * ... * }; */varsolution=function(isBadVersion:any){returnfunction(n:number):number{let[l,r]=[1,n];while(l<r){constmid=(l+r)>>>1;if(isBadVersion(mid)){r=mid;}else{l=mid+1;}}returnl;};};
1 2 3 4 5 6 7 8 9101112131415161718
// The API isBadVersion is defined for you.// isBadVersion(version:i32)-> bool;// to call it use self.isBadVersion(version)implSolution{pubfnfirst_bad_version(&self,n:i32)->i32{let(mutl,mutr)=(1,n);whilel<r{letmid=l+(r-l)/2;ifself.isBadVersion(mid){r=mid;}else{l=mid+1;}}l}}
/** * Definition for isBadVersion() * * @param {integer} version number * @return {boolean} whether the version is bad * isBadVersion = function(version) { * ... * }; *//** * @param {function} isBadVersion() * @return {function} */varsolution=function(isBadVersion){/** * @param {integer} n Total versions * @return {integer} The first bad version */returnfunction(n){let[l,r]=[1,n];while(l<r){constmid=(l+r)>>>1;if(isBadVersion(mid)){r=mid;}else{l=mid+1;}}returnl;};};