美文网首页
搜索区间-二分查找

搜索区间-二分查找

作者: Magic11 | 来源:发表于2019-03-07 16:07 被阅读0次

给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置

1、查找target的起始位置

    int searchStartPos(vector<int> vec, int target) {
        int low = 0;
        int high = vec.size() - 1;
        while (low < high) {  //注意不是 <=, 不然会死循环
            int mid = (low + high) / 2;
            if (vec[mid] >= target) {
                high = mid;
            } else {
                low = mid + 1;
            }
        }
        if (vec[high] == target) {
            return high;
        } else {
            return -1;
        }
    }

2、查找target的结束位置

    int searchEndPos(vector<int> vec, int target) {
        int low = 0;
        int high = vec.size() - 1;
        while (low < high) {
            int mid = (low + high) / 2;
            if (vec[mid] <= target) {
                low = mid + 1;
            } else {
                high = mid;
            }
        }

        if (vec[low - 1] == target) {
            return low - 1;
        } else {
            return -1;
        }
    }

leetcode 61. 搜索区间:
给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置。
https://www.lintcode.com/problem/search-for-a-range/description
leetcode 462. 目标出现总和:
给一个升序的数组,以及一个target,找到它在数组中出现的次数。
https://www.lintcode.com/problem/total-occurrence-of-target/description

相关文章

  • 算法-二分查找题型

    二分查找详解 二分查找是一种针对有限区间的O(logN)搜索方式,最常见与已经排好需的Array二分查找两大基本原...

  • 搜索区间-二分查找

    给定一个包含 n 个整数的排序数组,找出给定目标值 target 的起始和结束位置 1、查找target的起始位置...

  • Algorithm进阶计划 -- 二分搜索

    二分搜索二分搜索模板二分搜索运用 1. 二分搜索模板 二分搜索(二分查找)也称折半查找(Binary Search...

  • 二分查找问题(关键:确定搜索区间)

    写在前 对于二分查找关键是:确定二分查找的搜索区间,下面代码(T704)中数组中元素唯一。不存在返回索引为-1。 ...

  • 查找算法之-二分查找

    查找是针对已排序数进行查找的。1、二分查找非递归实现思想:通过while循环不断在新的区间中二分查找 2、二分查找...

  • 算法与数据结构 之 二分查找

    一、概念 二分查找每次选取区间的中间元素进行比较, 将查找的区间缩小为一半,直到找到查找的元素或者区间长度为0结束...

  • noip普及组4:常用技巧

    常用技巧 二分查找 二分查找有64种写法。 对其进行分类:取整方式:向下取整,向上取整(共2种)区间开闭:闭区间,...

  • 二分查找(上)

    一、什么是二分查找? 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的...

  • 二分查找

    一、什么是二分查找? 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的...

  • 二分查找

    一、什么是二分查找? 二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的...

网友评论

      本文标题:搜索区间-二分查找

      本文链接:https://www.haomeiwen.com/subject/gtzcpqtx.html