[LeetCode] First Bad Version Java

dustle·2023년 5월 18일
1

First Bad Version

해당 버전이 실패했는지 성공했는지 알려주는 메소드를 주고
가장 먼저 발생한 실패 버전을 찾아야합니다.

이분 탐색 문제로 int 끼리 더해서 나누면 범위를 초과하여 에러가 나는 테스트 케이스가 있습니다.
형변환으로 long 으로 바꿔주면 통과됩니다.
아니면 start + (end - start) / 2 로 바꿔주면 int 범위 오류가 나지 않습니다.

/* The isBadVersion API is defined in the parent class VersionControl.
      boolean isBadVersion(int version); */

public class Solution extends VersionControl {
    public int firstBadVersion(int n) {
        long start = 1;
        long end = (long) n;
        long mid = 0;

        while(start < end) {
            mid = (start + end) / 2;

            if(!isBadVersion((int)mid)) {
                start = mid + 1;
            }
            else {
                end = mid;
            }    
        }

        return (int)start;
    }
}

0개의 댓글