LintCode - 첫 번째 잘못된 코드 버전

1380 단어 면접 시험lintcode
코드 라이브러리의 버전 번호는 1에서 n까지의 정수이다.어느 날 잘못된 버전의 코드가 제출되어 자신과 그 다음 버전의 코드가 단원 테스트에서 모두 오류가 발생했습니다.첫 번째 잘못된 버전 번호를 찾아 주세요.isBadVersion의 인터페이스를 통해 버전 번호 버젼이 단원 테스트에서 오류가 발생했는지 판단할 수 있습니다. 구체적인 인터페이스 정보와 호출 방법은 코드의 주석 부분을 보십시오.
예제
제시n=5호출isBadVersion(3), 획득false호출isBadVersion(5), 획득true호출isBadVersion(4), 획득true이때 우리는 4가 첫 번째 잘못된 버전 번호라고 단정할 수 있다
주의
상기 코드를 읽고 서로 다른 언어에 대해 isBadVersion을 정확하게 호출하는 방법, 예를 들어 자바의 호출 방식VersionControl.isBadVersion을 보십시오.
도전하다
isBadVersion 호출 횟수가 적을수록 좋습니다.
분석: 간단한 이분 검색 문제
코드:
/**
 * class VersionControl {
 *     public:
 *     static bool isBadVersion(int k);
 * }
 * you can use VersionControl::isBadVersion(k) to judge wether 
 * the kth code version is bad or not.
*/
class Solution {
public:
    /**
     * @param n: An integers.
     * @return: An integer which is the first bad version.
     */
    int findFirstBadVersion(int n) {
        // write your code here
        if(n<=0)
            return 0;
        int l = 1, r = n;
        while(l<r)
        {
            int mid = (l+r)/2;
            if(VersionControl::isBadVersion(mid))
                r = mid;
            else
                l = mid+1;
        }
        return l;
    }
};

좋은 웹페이지 즐겨찾기