File tree Expand file tree Collapse file tree 6 files changed +169
-9
lines changed
solution/0300-0399/0367.Valid Perfect Square Expand file tree Collapse file tree 6 files changed +169
-9
lines changed Original file line number Diff line number Diff line change 34
34
<li><code>1 <= num <= 2^31 - 1</code></li>
35
35
</ul >
36
36
37
-
38
37
## 解法
39
38
40
39
<!-- 这里可写通用的实现逻辑 -->
41
40
41
+ 二分法。
42
+
42
43
<!-- tabs:start -->
43
44
44
45
### ** Python3**
45
46
46
47
<!-- 这里可写当前语言的特殊实现逻辑 -->
47
48
48
49
``` python
49
-
50
+ class Solution :
51
+ def isPerfectSquare (self , num : int ) -> bool :
52
+ left, right = 1 , num
53
+ while left < right:
54
+ mid = left + ((right - left) >> 1 )
55
+ if num // mid <= mid:
56
+ right = mid
57
+ else :
58
+ left = mid + 1
59
+ return left * left == num
50
60
```
51
61
52
62
### ** Java**
53
63
54
64
<!-- 这里可写当前语言的特殊实现逻辑 -->
55
65
56
66
``` java
67
+ class Solution {
68
+ public boolean isPerfectSquare (int num ) {
69
+ int left = 1 , right = num;
70
+ while (left < right) {
71
+ int mid = (left + right) >>> 1 ;
72
+ if (num / mid <= mid) {
73
+ right = mid;
74
+ } else {
75
+ left = mid + 1 ;
76
+ }
77
+ }
78
+ return left * left == num;
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### ** C++**
84
+
85
+ ``` cpp
86
+ class Solution {
87
+ public:
88
+ bool isPerfectSquare(int num) {
89
+ long left = 1, right = num;
90
+ while (left < right) {
91
+ int mid = left + ((right - left) >> 1);
92
+ if (num / mid <= mid) {
93
+ right = mid;
94
+ } else {
95
+ left = mid + 1;
96
+ }
97
+ }
98
+ return left * left == num;
99
+ }
100
+ };
101
+ ```
57
102
103
+ ### **Go**
104
+
105
+ ```go
106
+ func isPerfectSquare(num int) bool {
107
+ left, right := 1, num
108
+ for left < right {
109
+ mid := left + (right-left)>>1
110
+ if num/mid <= mid {
111
+ right = mid
112
+ } else {
113
+ left = mid + 1
114
+ }
115
+ }
116
+ return left*left == num
117
+ }
58
118
```
59
119
60
120
### ** ...**
Original file line number Diff line number Diff line change 23
23
<li><code>1 <= num <= 2^31 - 1</code></li>
24
24
</ul >
25
25
26
-
27
26
## Solutions
28
27
29
28
<!-- tabs:start -->
30
29
31
30
### ** Python3**
32
31
33
32
``` python
34
-
33
+ class Solution :
34
+ def isPerfectSquare (self , num : int ) -> bool :
35
+ left, right = 1 , num
36
+ while left < right:
37
+ mid = left + ((right - left) >> 1 )
38
+ if num // mid <= mid:
39
+ right = mid
40
+ else :
41
+ left = mid + 1
42
+ return left * left == num
35
43
```
36
44
37
45
### ** Java**
38
46
39
47
``` java
48
+ class Solution {
49
+ public boolean isPerfectSquare (int num ) {
50
+ int left = 1 , right = num;
51
+ while (left < right) {
52
+ int mid = (left + right) >>> 1 ;
53
+ if (num / mid <= mid) {
54
+ right = mid;
55
+ } else {
56
+ left = mid + 1 ;
57
+ }
58
+ }
59
+ return left * left == num;
60
+ }
61
+ }
62
+ ```
63
+
64
+ ### ** C++**
65
+
66
+ ``` cpp
67
+ class Solution {
68
+ public:
69
+ bool isPerfectSquare(int num) {
70
+ long left = 1, right = num;
71
+ while (left < right) {
72
+ int mid = left + ((right - left) >> 1);
73
+ if (num / mid <= mid) {
74
+ right = mid;
75
+ } else {
76
+ left = mid + 1;
77
+ }
78
+ }
79
+ return left * left == num;
80
+ }
81
+ };
82
+ ```
40
83
84
+ ### **Go**
85
+
86
+ ```go
87
+ func isPerfectSquare(num int) bool {
88
+ left, right := 1, num
89
+ for left < right {
90
+ mid := left + (right-left)>>1
91
+ if num/mid <= mid {
92
+ right = mid
93
+ } else {
94
+ left = mid + 1
95
+ }
96
+ }
97
+ return left*left == num
98
+ }
41
99
```
42
100
43
101
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ bool isPerfectSquare (int num) {
4
+ long left = 1 , right = num;
5
+ while (left < right) {
6
+ int mid = left + ((right - left) >> 1 );
7
+ if (num / mid <= mid) {
8
+ right = mid;
9
+ } else {
10
+ left = mid + 1 ;
11
+ }
12
+ }
13
+ return left * left == num;
14
+ }
15
+ };
Original file line number Diff line number Diff line change
1
+ func isPerfectSquare (num int ) bool {
2
+ left , right := 1 , num
3
+ for left < right {
4
+ mid := left + (right - left )>> 1
5
+ if num / mid <= mid {
6
+ right = mid
7
+ } else {
8
+ left = mid + 1
9
+ }
10
+ }
11
+ return left * left == num
12
+ }
Original file line number Diff line number Diff line change 1
1
class Solution {
2
2
public boolean isPerfectSquare (int num ) {
3
- long r = num ;
4
- while (r * r > num ) {
5
- r = (r + num / r ) / 2 ;
3
+ int left = 1 , right = num ;
4
+ while (left < right ) {
5
+ int mid = (left + right ) >>> 1 ;
6
+ if (num / mid <= mid ) {
7
+ right = mid ;
8
+ } else {
9
+ left = mid + 1 ;
10
+ }
6
11
}
7
- return r * r == num ;
12
+ return left * left == num ;
8
13
}
9
- }
14
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def isPerfectSquare (self , num : int ) -> bool :
3
+ left , right = 1 , num
4
+ while left < right :
5
+ mid = left + ((right - left ) >> 1 )
6
+ if num // mid <= mid :
7
+ right = mid
8
+ else :
9
+ left = mid + 1
10
+ return left * left == num
You can’t perform that action at this time.
0 commit comments