class Solution {
public int search(int[] nums, int target) {
if( target >= nums[0] && target <= nums[nums.length - 1] ) {
int left = 0, right = nums.length -1;
while( left <= right ) {
int middle = (left + right) / 2;
if( nums[middle] == target) {
return middle;
} else if ( nums[middle] < target) {
left = middle + 1;
} else {
right = middle - 1;
}
}
} else {
return -1;
}
return -1;
}
}
很久没写算法题了,第一题写的时候忘记在left和right靠拢的时候+1-1,导致出现left=middle=right的情况发生死循环。