Valid Perfect Square
2016-08-18 05:14
381 查看
Given a positive integer num, write a function which returns True if num is a perfect square else False.
Note: Do not use any built-in library function such as
Example 1:
Example 2:
Credits:
Special thanks to @elmirap for adding this problem and creating all test cases.
思路:在binary search time out的情况下,还有另外一种收缩上限的方法,那就是num/i,搜索1到sqrt(num)的上线,这里并没有用sqrt,而是用了除法。很巧妙。
i<=num/i, 实际上i的取值范围是1~ sqrt(num);
public class Solution {
public boolean isPerfectSquare(int num) {
if(num < 0) return false;
if(num == 0 || num == 1) return true;
for(int i=1; i<= num/i; i++){
if( i*i == num) return true;
}
return false;
}
}
Binary Search, timeout.
public class Solution {
public boolean isPerfectSquare(int num) {
if(num < 0) return false;
int start =0; int end = num;
while(start <= end) {
int mid = start+(end-start)/2;
if(mid*mid == num) {
return true;
} else if( mid*mid > num){
end = mid-1;
} else {
start = mid+1;
}
}
return false;
}
}
Note: Do not use any built-in library function such as
sqrt.
Example 1:
Input: 16 Returns: True
Example 2:
Input: 14 Returns: False
Credits:
Special thanks to @elmirap for adding this problem and creating all test cases.
思路:在binary search time out的情况下,还有另外一种收缩上限的方法,那就是num/i,搜索1到sqrt(num)的上线,这里并没有用sqrt,而是用了除法。很巧妙。
i<=num/i, 实际上i的取值范围是1~ sqrt(num);
public class Solution {
public boolean isPerfectSquare(int num) {
if(num < 0) return false;
if(num == 0 || num == 1) return true;
for(int i=1; i<= num/i; i++){
if( i*i == num) return true;
}
return false;
}
}
Binary Search, timeout.
public class Solution {
public boolean isPerfectSquare(int num) {
if(num < 0) return false;
int start =0; int end = num;
while(start <= end) {
int mid = start+(end-start)/2;
if(mid*mid == num) {
return true;
} else if( mid*mid > num){
end = mid-1;
} else {
start = mid+1;
}
}
return false;
}
}
相关文章推荐
- Ericsson open-sources OpenWebRTC and Bowser for iOS; Intel releases IoT developer kit
- seajs 2.x _ 非模块化的调用方式
- H5常用代码:适配方案4
- seajs 2.x _ 模块的相互引用
- HDU 5847 Different Sums (构造+数学+打表)
- seajs 2.x _ 定义基本模块
- [Web前端工具篇]Sublime 3安装Markdown插件
- 在html中使用javascript
- [React Fundamentals] Composable Components
- json字符串,javaScript,java之间的转换
- 入门 Webpack
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- [leetcode]-Linked List Random Node
- jsp有哪些内置对象?作用分别是什么?分别有什么方法?
- Gson 框架的使用
- 数学推导______Different Sums( hdu 5847 2016多校第九场)
- JQ验证表单
- node之hello world