Skip to content

Commit f207f3b

Browse files
authored
Create Valid Perfect Square
1 parent dd4b6f6 commit f207f3b

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
想法:等於找第一個數字i s.t. i * i >= num ,所以用 l , r 維護第一個數字i 的範圍
2+
注意:因為 r 非常大,所以將int 改成 long long int 避免overflow
3+
4+
Time Complexity : O(logn) for binary search
5+
Space Complexity : O(1) for variables
6+
7+
class Solution {
8+
public:
9+
bool isPerfectSquare(int num) {
10+
long long int l = 1 , r = num ;
11+
while ( l < r ) {
12+
long long int m = (l + r + 1) / 2 ;
13+
if ( m * m == num )
14+
l = r = m ;
15+
else if ( m * m > num )
16+
r = m - 1 ;
17+
else
18+
l = m + 1 ;
19+
}
20+
21+
return ( r * r == num ) ;
22+
}
23+
};

0 commit comments

Comments
 (0)