OJ:lintcode 经典二分查找问题

在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1
您在真实的面试中是否遇到过这个题?
Yes
样例
�给出数组 [1, 2, 2, 4, 5, 5].
对于 target = 2, �返回 1 或者 2.
对于 target = 5, �返回 4 或者 5.
对于 target = 6, �返回 -1.

class Solution{
public:
    /**
    * @param A an integer array sorted in ascending order
    * @param target an integer
    * @return an integer
    */


    int findPosition(vector<int>& A, int target) {
        // Write your code here

        if (A.size() == 0) {
            return -1;
        }
        int begin = 0;
        int end = A.size() - 1;
        while (begin < end) {
            int mid = begin + (end - begin) / 2;
            if (A[mid] == target) {
                return mid;
            }
            else if (A[mid] < target) {
                begin = mid + 1;
                end = end;
                continue;
            }
            else {
                end= mid - 1;
                begin = begin;
                continue;
            }
        }

        if (A[begin] == target) {
            return begin;
        }

        if (A[end] == target) {
            return end;
        }

        return -1;


    }
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,779评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,993评论 19 139
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,217评论 30 472
  • 题目 描述 在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回-1 样例 给出数组[1, 2, 2...
    悠扬前奏阅读 217评论 0 0
  • 搜索旋转排序数组1: 假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7可能成为4 5 6...
    简心豆阅读 1,271评论 0 0