'find a position of an element occurrence in array
I've below code snippet, A is non-decreasing order and need to check if X is present in A. If X is present in A then return position of occurrence of X in A otherwise returns -1. This code is not correct for some inputs, and need to fix it. Utmost I can modify 3 lines.
class Checking{
int check(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;
}
}
I couldnt figure out the fix, any suggestions will be helpful ?
Solution 1:[1]
Wiki page says that for such implementation of binary search middle element should be calculated using ceiling, so you can change to
int m = (l + r + 1) / 2;
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
