力扣二分查找学习计划 第四天

69. x 的平方根 

我直接不讲码德 return sqrt(x)

简单二分,没啥好讲的,因为整形是向下取整所以返回的值肯定是小于等于sqrt(x)的

所以只要找到某个i满足i*i<=x和(i+1)*(i+1)>x,然后返回i即可

class Solution {
public:
    int mySqrt(int x) {
        if(x<2){
            return x;
        }
        long long int p=0,q=x;
        while(p+1<q){
            long long int mid=p+(q-p)/2;
            if(mid*mid<=x){
                p=mid;
            }
            else{
                q=mid;
            }
        }

        return p;
    }
};



744. 寻找比目标字母大的最小字母

 

class Solution {
public:
    char nextGreatestLetter(vector<char>& letters, char target) {
            int p=0,q=letters.size()-1;
            if(letters[q]<=target||letters[0]>target){
                return letters[0];
            }
            while(p<q){
                int mid=p+(q-p)/2;
                if(letters[mid]>target){
                    q=mid;
                }
                else{
                    p=mid+1;
                }
            }
            return letters[q];
    }
};

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乔千玫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值