LeetCode Sqrt(x) 整数平方根 java
2016-09-06 22:08
465 查看
http://oj.leetcode.com/problems/sqrtx/
求一个整数的平方根,如果该整数的平方根不是整数的话,返回平方根取整。
最简单办法,暴力搜索从1到N/2搜索但会TLE。
二分搜索,开始区间是1,终止区间是x。
AC代码:
[java] view
plain copy
public class Solution {
public int sqrt(int x) {
if(x<=1) {
return x;
}
int begin = 1;
int end = x;
int middle = 0;
while(begin<=end) {
middle = begin + (end - begin)/2;
//不要写成middle*middle==x,会溢出
if(middle==x/middle) {
return middle;
} else {
if (middle<x/middle) {
begin = middle + 1;
} else {
end = middle - 1;
}
}
}
//结束条件end一定<begin,所以返回end
return end;
}
}
这道题还有一种变形是给你一个数x,判断是否是一个完全平方数。基本思路一样,二分搜索1到x/2,结束条件是begin的平方大于x。
求一个整数的平方根,如果该整数的平方根不是整数的话,返回平方根取整。
最简单办法,暴力搜索从1到N/2搜索但会TLE。
二分搜索,开始区间是1,终止区间是x。
AC代码:
[java] view
plain copy
public class Solution {
public int sqrt(int x) {
if(x<=1) {
return x;
}
int begin = 1;
int end = x;
int middle = 0;
while(begin<=end) {
middle = begin + (end - begin)/2;
//不要写成middle*middle==x,会溢出
if(middle==x/middle) {
return middle;
} else {
if (middle<x/middle) {
begin = middle + 1;
} else {
end = middle - 1;
}
}
}
//结束条件end一定<begin,所以返回end
return end;
}
}
这道题还有一种变形是给你一个数x,判断是否是一个完全平方数。基本思路一样,二分搜索1到x/2,结束条件是begin的平方大于x。
相关文章推荐
- Sqrt(x) -- LeetCode (Java)
- [LeetCode][Java] Sqrt(x)
- [Leetcode] Sqrt(x) (Java)
- [Java]Leetcode69 Sqrt(x)
- leetcode oj java 69. Sqrt(x)
- 【leetcode】69. Sqrt(x)【java】
- 【leetcode】第69题 Sqrt(x) 题目+解析+JAVA代码
- Java for LeetCode 069 Sqrt(x)
- (Java)LeetCode-69. Sqrt(x)
- leetcode解题之69.Sqrt(x) & 367. Valid Perfect Square Java版 (求一个数的平方根)
- leetcode:Sqrt(x) 【Java】
- (java)leetcode-69:Sqrt(x)
- LeetCode 69 — Sqrt(x)(C++ Java Python)
- 【小熊刷题】sqrt(x) <Leetcode 69 Java>
- LeetCode069 sqrtx java solution
- LeetCode-Sqrt(x)
- [LeetCode(Q69)] Sqrt(x) (编程实现sqrt)
- leetcode:Sqrt(x)
- [Leetcode 85] 69 Sqrt(x)
- [leetcode] Sqrt(x)