美文网首页
6_6最左原位

6_6最左原位

作者: X_Y | 来源:发表于2017-10-23 16:35 被阅读13次

    有一个有序数组arr,其中不含有重复元素,请找到满足arr[i]==i条件的最左的位置。如果所有位置上的数都不满足条件,返回-1。

    给定有序数组arr及它的大小n,请返回所求值。

    测试样例:
    [-1,0,2,3],4
    返回:2

    class Find {
    public:
        int findPos(vector<int> arr, int n) {
            // write code here
            int left = 0, right = n-1;
            int res = -1;
            while(left <= right){
                int mid = (left + right) / 2;
                if(arr[mid] == mid){
                    res = mid;
                    right = mid - 1;
                }else if(arr[mid] > mid){
                    right = mid - 1;
                }else{
                    left = mid + 1;
                }
            }
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:6_6最左原位

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