我的LeetCode代码仓:https://github.com/617076674/LeetCode
原题链接:https://leetcode-cn.com/problems/sqrtx/description/
题目描述:
知识点:二分法
思路一:从1开始逐个查找
思路一是最先能想到的简单粗暴的解法。从数字1开始找,一旦找到平方值等于x的数字i,直接返回i。如果找到平方值大于x的数字i,需要返回i - 1。
需要注意的是,为了防止做乘法运算时越界,需要强转为long类型。
时间复杂度是O(sqrt(x))。空间复杂度是O(1)。
JAVA代码:
public class Solution {
public int mySqrt(int x) {
for (long i = 1; i <= x; i++) {
if(i * i > x) {
return (int)(i - 1);
}else if(i * i == x) {
return (int)i;
}
}
return 0;
}