1027-二分查找

在这里插入图片描述
解题思路:
根据二分法的算法思想,需要使用左右两个下标寻找得到的值,在本题中,第一次二分就能得到最后的值,但是输出的index是3,因此需要从找到的位置的左指针处+1;

class Solution {
    
    
public:
    /**
     * 二分查找
     * @param n int整型 数组长度
     * @param v int整型 查找值
     * @param a int整型vector 有序数组
     * @return int整型
     */
    int upper_bound_(int n, int v, vector<int>& a) {
    
    
        // write code here
        int right = n-1, left = 0;
        while(left <= right)
        {
    
    
            int mid = (left + right) / 2;
            if(a[mid] > v)
            {
    
    
                right = mid - 1;
            }else if(a[mid] < v)
            {
    
    
                left = mid + 1;
            }else
                right = mid - 1;
        }
        return left + 1;
    }
};

猜你喜欢

转载自blog.csdn.net/weixin_45885232/article/details/109321287
今日推荐