Skip to content

Commit 2f20a56

Browse files
committed
add solution of problem 367: valid perfect square
1 parent 9b37c0a commit 2f20a56

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

ValidPerfectSquare367/README.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
Given a positive integer *num*, write a function which returns True if *num* is a perfect square else False.
2+
3+
**Note: Do not** use any built-in library function such as `sqrt`.
4+
5+
#####Example 1:
6+
```
7+
Input: 16
8+
9+
Returns: True
10+
```
11+
#####Example 2:
12+
```
13+
Input: 14
14+
15+
Returns: False
16+
```
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
public class Solution {
2+
public boolean isPerfectSquare(int num) {
3+
if (num <= 0)
4+
return false;
5+
else if (num == 1)
6+
return true;
7+
8+
long left = 0;
9+
long right = num;
10+
11+
while (left < right) {
12+
long mid = (left + right) >> 1;
13+
long value = mid * mid;
14+
15+
if (left == mid && value != num)
16+
return false;
17+
18+
if (value > num)
19+
right = mid;
20+
else if (value < num)
21+
left = mid;
22+
else
23+
return true;
24+
}
25+
26+
return false;
27+
}
28+
}

0 commit comments

Comments
 (0)