题解 | #二分查找-I#
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target) {
// write code here
int tot = nums.size();
int start = 0;
if (nums.size() == 0) return -1;
if (target == nums[0]) return 0;
if (target ==nums[tot - 1]) return (tot - 1);
if (nums[tot - 1] == nums[0]) return -1;
if (tot - start < 2) return -1;
// int idx = tot * (target - nums[0]) / (nums[tot - 1] - nums[0]);
int idx = (start + tot) >> 1;
while (start < tot)
{
if (nums[idx] == target) return idx;
idx = (idx + tot) >> 1;
if (nums[idx] < target)
{
start = idx + 1;
}
else
{
tot = idx - 1;
}
}
return -1;
}
};
查看13道真题和解析
