이 인터뷰 질문을 발견했습니다. 정렬 된 배열에서 이진 검색을해야한다는 것입니다. 다음은 그 코드입니다. 이 코드는 정답을주지 않는 버그가 있습니다. 올바른 결과를 내기 위해 코드를 변경해야합니다.바이너리 검색 코드 디버그
조건 : 줄을 추가 할 수 없으며 코드에서 세 줄만 변경할 수 있습니다.
int solution(int[] A, int X) {
int N = A.length;
if (N == 0) {
return -1;
}
int l = 0;
int r = N;
while (l < r) {
int m = (l + r)/2;
if (A[m] > X) {
r = m - 1;
} else {
l = m+1;
}
}
if (A[r] == X) {
return r;
}
return -1;
}
나는 많은 것을 독자적으로 시도했지만 일부 테스트 사례에서는 누락되었습니다.
누락 된 테스트 케이스는 무엇입니까? – APerson
number가 찾고있는 배열의 fisr 번호 인 경우. –
루프에서 번호가 발견되면 (예 :'[m] == X)','l'은 그것을 반환하는 대신 수정됩니다. – imreal