leetcode算法69.x 的平方根

简介: 本文讲解如何用leetcode算法求69.x 的平方根。

一、leetcode算法



1、x 的平方根


1.1、题目


给你一个非负整数 x ,计算并返回 x 的 算术平方根 。


由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。


注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。


示例 1:


输入:x = 4

输出:2

示例 2:


输入:x = 8

输出:2

解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。


1.2、思路


思路一:本题可以使用二分法来解决问题,可以将左边界定义为0,右边界定义为x,通过二分法查找最终结果ans的平方是否小于等于x,因为取整,小数不要,所以最终结果的平方可能小于目标值x。


1.3、答案


16.png


class Solution {
    public int mySqrt(int x) {
        //定义左右位置,和最终结果变量
        int left = 0, right = x, ans = -1;
        //终止条件为左边位置小于等于右边位置
        while(left <= right){
            //二分法计算中间位置计算方法
            int mid = left + (right - left) / 2;
            //计算mid的平方和目标值x的比较
            if((long) mid * mid <= x){
                //如果mid平方小于等于x,则证明符合结果,将mid直接赋值给ans
                ans = mid;
                left = mid + 1;
            }else {
                right = mid - 1;
            }
        }
        return ans;
    }
}


复杂度分析


时间复杂度:O(log x),即为二分查找需要的次数。


空间复杂度:O(1)。

相关文章
|
2月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
39 0
|
20天前
|
存储 算法 Java
leetcode算法题-有效的括号(简单)
【11月更文挑战第5天】本文介绍了 LeetCode 上“有效的括号”这道题的解法。题目要求判断一个只包含括号字符的字符串是否有效。有效字符串需满足左括号必须用相同类型的右括号闭合,并且左括号必须以正确的顺序闭合。解题思路是使用栈数据结构,遍历字符串时将左括号压入栈中,遇到右括号时检查栈顶元素是否匹配。最后根据栈是否为空来判断字符串中的括号是否有效。示例代码包括 Python 和 Java 版本。
|
2月前
|
算法
每日一道算法题(Leetcode 20)
每日一道算法题(Leetcode 20)
27 2
|
4月前
|
算法
测试工程师的技能升级:LeetCode算法挑战与职业成长
这篇文章通过作者亲身体验LeetCode算法题的过程,探讨了测试工程师学习算法的重要性,并强调了算法技能对于测试职业成长的必要性。
70 1
测试工程师的技能升级:LeetCode算法挑战与职业成长
|
4月前
|
算法 Java
LeetCode第69题x 的平方根
这篇文章是关于LeetCode第69题"x的平方根"的解题分享。作者介绍了使用二分查找算法来解决这个问题的方法,这是一种简单且有效的方式,可以显著降低求解平方根的时间复杂度。文章提供了详细的分析、解题思路和Java语言的代码实现,最后总结了二分查找思想在算法中的应用价值。
LeetCode第69题x 的平方根
|
4月前
|
算法 Java
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
LeetCode经典算法题:矩阵中省份数量经典题目+三角形最大周长java多种解法详解
52 6
|
4月前
|
存储 算法 Java
LeetCode经典算法题:打家劫舍java详解
LeetCode经典算法题:打家劫舍java详解
70 2
|
4月前
|
人工智能 算法 Java
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
LeetCode经典算法题:井字游戏+优势洗牌+Dota2参议院java解法
51 1
|
4月前
|
存储 算法 Java
LeetCode经典算法题:预测赢家+香槟塔java解法
LeetCode经典算法题:预测赢家+香槟塔java解法
61 1
|
4月前
|
算法
【算法】二分算法——x的平方根
【算法】二分算法——x的平方根