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;


    }
};
    原文作者:zhaozhengcoder
    原文地址: https://www.jianshu.com/p/dad354fdb283#comments
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞