昨晚我接受了这个测试。
` int binaryS(int[] A, int X) {
int N = A.length;
if (N == 0) {
return -1;
}
int l = 0;
int r = N - 1;
while (l < r) {
int m = (l + r) / 2;
if (A[m] > X) {
r = m - 1;
} else {
l = m;
}
}
if (A[l] == X) {
return l;
}
return -1;
}`
我必须调试/重构代码。 条件:“您只能修改三行”。
任何人都可以帮助我吗?
答案 0 :(得分:1)
二进制搜索的正确代码是:
while (l < r) {
int m = (l + r) / 2;
if (A[m] == X) {
return m;
}
if (A[m] > X) {
r = m - 1;
}
else if (A[m] < X) {
l = m + 1;
}
}
return -1;
只需将'found'条件放在循环中的任何其他条件之前,你就可以了!