[STL] lower_bound和upper_bound实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sai_j/article/details/82944706
    int lower_bound(vector<int>& nums, int target) {
        int lo = 0, hi = nums.size() - 1;
        
        while (lo <= hi) {	// equal
            int mid = lo + (hi - lo) / 2;
            if (target > nums[mid]) {
                lo = mid + 1;
            } else {
                hi = mid - 1;	// mid - 1 !!
            }
        }
        
        return lo;
    }
    int upper_bound(vector<int>& nums, int target) {
        int lo = 0, hi = nums.size() - 1;
        
        while (lo <= hi) {	// equal !!
            int mid = lo + (hi - lo) / 2;
            if (target >= nums[mid]) {
                lo = mid + 1;
            } else {
                hi = mid - 1;		// mid - 1 !!
            }
        }
        
        return lo;
    }

猜你喜欢

转载自blog.csdn.net/sai_j/article/details/82944706