题解 | 二分查找-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&sup2;)(但比较次数为 O(n log n)) 空间复杂度 O(1)(迭代) O(1)

全部评论

相关推荐

04-01 12:25
中南大学 Java
枯基Evan_:腾讯一面写过11次的题目没写出来
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务