69. x 的平方根

该文章介绍了如何使用二分查找算法解决力扣平台上的一个问题,即找到小于等于给定整数x的最大正整数k,满足k的平方小于x。为了避免整数溢出,文章提出了使用long类型或检查(k*k)/k是否等于k的方法。给出的AC代码中,通过不断调整搜索范围,最终找到满足条件的结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:力扣

 

解题思路:二分查找, 从1到x进行二分找到一个最大的k是的K^2<x,因为k*k可能发生溢出,可以将使用long类型,或者通过(k*k)/k==k来快速判断是否发生了溢出,如果发生了溢出,则(k*k)/k!=k。

AC代码

class Solution {
    public  static int mySqrt(int x) {
        int left = 1;
        int right = x;
        int result =0;
        while (left <= right) {
            int mid = (right-left)/2+left;
            int square = mid*mid;
            if (square/mid==mid&&mid*mid<=x){
                result =mid;
                left = mid+1;
            }else {
                right=mid-1;
            }
        }
        return result;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值