题目地址(69. Sqrt(x))
https://leetcode-cn.com/problems/sqrtx/
题目描述
给你一个非负整数 x ,计算并返回 x 的 算术平方根 。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。示例 1:输入:x = 4输出:2示例 2:输入:x = 8输出:2解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。提示:0 <= x <= 231 - 1
前置知识
公司
- 暂无
思路
使用二分查找的方式 如果x小于中值相乘就让max等于中值 快速的求出值
关键点
代码
- 语言支持:Java
Java Code:
class Solution {public int mySqrt(int x) {//如果x=1的话 返回1if(x==1){return 1;}int min = 0;int max = x;while(max-min>1){int f = (min+max)/2;//使用x/f<f而不是x<f*f是因为防止溢出if(x/f<f){max = f;}else{min = f;}}return min;}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28logn%29&id=blhgo)
- 空间复杂度:
#card=math&code=O%28n%29&id=XjxJ9)
