だから私は巨大な障害物にぶつかっています....多分それは私の論理がそこにないからかもしれませんが、私は自分でこれを理解することができないようです.
BinarySearch
2つのインデックスを取得するように変更しようとしています。
最初のインデックスは、指定された数値 x の左端のインデックスと右端のインデックスです。数値が存在しない場合は、[-1,-1] が生成されます。
いずれかの方法。BinarySearch を変更しようとしていますが、うまくいかないようです。任意のポインタをいただければ幸いです。
public static Pair BinarySearchDup(int[] A, int x, int low, int high){
int mid = (low + high) / 2;
int left = -1, right = -1;
while(low <= high){
mid = (low + high) / 2;
if(A[mid] == x){
int newMid = mid;
//check left
if(left == -1){
left = mid;
return BinarySearchDup(A, x, low, mid - 1);
}
else if(right == -1){
right = mid;
return BinarySearchDup(A, x, newMid + 1, high);
}
return new Pair(left, right);
}
else if(A[mid] < x)
return BinarySearchDup(A, x, mid + 1, high);
else// (A[mid] > x)
return BinarySearchDup(A, x, low, mid - 1);
}
//if there are no matches of the number then it returns -1
return new Pair(-1, -1);
}