区间[L,R]代表还需要查找的区间。
如果nums[mid] == target,直接返回答案
如果nums[mid] < target,说明mid位置及其前面的都不可能是答案了,让L = mid+1
如果nums[mid] > target,说明mid位置及其后面的位置都不可能是答案了,所以让R=mid-1
c++
class Solution {
public:
int search(vector<int>& nums, int target) {
int L,R;
L = 0;
R = nums.size()-1;
int ans = -1;
while(L <= R)
{
int mid = (L+R)/2;
if(nums[mid] == target)
{
return mid;
}
else if(nums[mid] > target)
{
R = mid-1;
}
else
{
L = mid+1;
}
}
return -1;
}
};java
import java.util.*;
public class Solution {
public int search (int[] nums, int target) {
int L,R;
L = 0;
R = nums.length-1;
int ans = -1;
while(L <= R)
{
int mid = (L+R)/2;
if(nums[mid] == target)
{
return mid;
}
else if(nums[mid] > target)
{
R = mid-1;
}
else
{
L = mid+1;
}
}
return -1;
}
}
python
class Solution:
def search(self , nums , target ):
L = 0
R = len(nums)-1
ans = -1
while L <= R:
mid = (L+R)//2;
if nums[mid] == target:
return mid
elif nums[mid] > target:
R = mid-1
else:
L = mid+1
return -1
京公网安备 11010502036488号