题解 | 二分查找-I
二分查找-I
https://www.nowcoder.com/practice/d3df40bd23594118b57554129cadf47b?tpId=295&tqId=1499549&sourceUrl=%2Fexam%2Foj
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param target int整型
* @return int整型
*/
int search(vector<int>& nums, int target) {
// write code here
int left =0;
int right = nums.size()-1;
while (left<=right) { //修改成<=
int middle = (left+right)/2;
if (nums[middle]==target) {
return middle;
}
if (nums[middle]<target) {
left = middle+1;
}else{
right =middle-1;
}
}
return -1;//执行到while循环外没有返回说明没有找到
}
};
二分查找/排序 文章被收录于专栏
特性 二分查找 二分插入排序 目的 在有序集合中快速查找元素 对一个无序集合进行排序 核心 分治,每次将搜索范围减半 在插入排序中,用二分法找插入点 前提 数据必须有序 无特殊前提 时间复杂度 O(log n) O(n²)(但比较次数为 O(n log n)) 空间复杂度 O(1)(迭代) O(1)
查看7道真题和解析