File tree Expand file tree Collapse file tree 6 files changed +219
-1
lines changed
solution/1900-1999/1979.Find Greatest Common Divisor of Array Expand file tree Collapse file tree 6 files changed +219
-1
lines changed Original file line number Diff line number Diff line change @@ -51,27 +51,107 @@ nums 中最大的数是 3
51
51
<li><code>1 <= nums[i] <= 1000</code></li>
52
52
</ul >
53
53
54
-
55
54
## 解法
56
55
57
56
<!-- 这里可写通用的实现逻辑 -->
58
57
58
+ 最大公约数算法:
59
+
60
+ ``` java
61
+ int gcd(int a, int b) {
62
+ return b > 0 ? gcd(b, a % b) : a;
63
+ }
64
+ ```
65
+
59
66
<!-- tabs:start -->
60
67
61
68
### ** Python3**
62
69
63
70
<!-- 这里可写当前语言的特殊实现逻辑 -->
64
71
65
72
``` python
73
+ class Solution :
74
+ def findGCD (self , nums : List[int ]) -> int :
75
+ def gcd (a , b ):
76
+ return gcd(b, a % b) if b > 0 else a
66
77
78
+ return gcd(max (nums), min (nums))
67
79
```
68
80
69
81
### ** Java**
70
82
71
83
<!-- 这里可写当前语言的特殊实现逻辑 -->
72
84
73
85
``` java
86
+ class Solution {
87
+ public int findGCD (int [] nums ) {
88
+ int a = 1 , b = 1000 ;
89
+ for (int num : nums) {
90
+ a = Math . max(a, num);
91
+ b = Math . min(b, num);
92
+ }
93
+ return gcd(a, b);
94
+ }
95
+
96
+ private int gcd (int a , int b ) {
97
+ return b > 0 ? gcd(b, a % b) : a;
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### ** C++**
103
+
104
+ ``` cpp
105
+ class Solution {
106
+ public:
107
+ int findGCD(vector<int >& nums) {
108
+ int a = 0, b = 1000;
109
+ for (int num : nums)
110
+ {
111
+ a = max(a, num);
112
+ b = min(b, num);
113
+ }
114
+ return gcd(a, b);
115
+ }
116
+
117
+ int gcd(int a, int b) {
118
+ return b > 0 ? gcd(b, a % b) : a;
119
+ }
120
+ };
121
+ ```
74
122
123
+ ### ** Go**
124
+
125
+ ``` go
126
+ func findGCD (nums []int ) int {
127
+ a , b := 0 , 1000
128
+ for _ , num := range nums {
129
+ a = max (a, num)
130
+ b = min (b, num)
131
+ }
132
+ return gcd (a, b)
133
+ }
134
+
135
+ func gcd (a , b int ) int {
136
+ if b > 0 {
137
+ return gcd (b, a%b)
138
+ }
139
+ return a
140
+ }
141
+
142
+ func max (a , b int ) int {
143
+ if a > b {
144
+ return a
145
+ }
146
+ return b
147
+ }
148
+
149
+ func min (a , b int ) int {
150
+ if a < b {
151
+ return a
152
+ }
153
+ return b
154
+ }
75
155
```
76
156
77
157
### ** ...**
Original file line number Diff line number Diff line change @@ -58,13 +58,86 @@ The greatest common divisor of 3 and 3 is 3.
58
58
### ** Python3**
59
59
60
60
``` python
61
+ class Solution :
62
+ def findGCD (self , nums : List[int ]) -> int :
63
+ def gcd (a , b ):
64
+ return gcd(b, a % b) if b > 0 else a
61
65
66
+ return gcd(max (nums), min (nums))
62
67
```
63
68
64
69
### ** Java**
65
70
66
71
``` java
72
+ class Solution {
73
+ public int findGCD (int [] nums ) {
74
+ int a = 1 , b = 1000 ;
75
+ for (int num : nums) {
76
+ a = Math . max(a, num);
77
+ b = Math . min(b, num);
78
+ }
79
+ return gcd(a, b);
80
+ }
81
+
82
+ private int gcd (int a , int b ) {
83
+ return b > 0 ? gcd(b, a % b) : a;
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### ** C++**
89
+
90
+ ``` cpp
91
+ class Solution {
92
+ public:
93
+ int findGCD(vector<int >& nums) {
94
+ int a = 0, b = 1000;
95
+ for (int num : nums)
96
+ {
97
+ a = max(a, num);
98
+ b = min(b, num);
99
+ }
100
+ return gcd(a, b);
101
+ }
102
+
103
+ int gcd(int a, int b) {
104
+ return b > 0 ? gcd(b, a % b) : a;
105
+ }
106
+ };
107
+ ```
67
108
109
+ ### ** Go**
110
+
111
+ ``` go
112
+ func findGCD (nums []int ) int {
113
+ a , b := 0 , 1000
114
+ for _ , num := range nums {
115
+ a = max (a, num)
116
+ b = min (b, num)
117
+ }
118
+ return gcd (a, b)
119
+ }
120
+
121
+ func gcd (a , b int ) int {
122
+ if b > 0 {
123
+ return gcd (b, a%b)
124
+ }
125
+ return a
126
+ }
127
+
128
+ func max (a , b int ) int {
129
+ if a > b {
130
+ return a
131
+ }
132
+ return b
133
+ }
134
+
135
+ func min (a , b int ) int {
136
+ if a < b {
137
+ return a
138
+ }
139
+ return b
140
+ }
68
141
```
69
142
70
143
### ** ...**
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public:
3
+ int findGCD (vector<int >& nums) {
4
+ int a = 0 , b = 1000 ;
5
+ for (int num : nums)
6
+ {
7
+ a = max (a, num);
8
+ b = min (b, num);
9
+ }
10
+ return gcd (a, b);
11
+ }
12
+
13
+ int gcd (int a, int b) {
14
+ return b > 0 ? gcd (b, a % b) : a;
15
+ }
16
+ };
Original file line number Diff line number Diff line change
1
+ func findGCD (nums []int ) int {
2
+ a , b := 0 , 1000
3
+ for _ , num := range nums {
4
+ a = max (a , num )
5
+ b = min (b , num )
6
+ }
7
+ return gcd (a , b )
8
+ }
9
+
10
+ func gcd (a , b int ) int {
11
+ if b > 0 {
12
+ return gcd (b , a % b )
13
+ }
14
+ return a
15
+ }
16
+
17
+ func max (a , b int ) int {
18
+ if a > b {
19
+ return a
20
+ }
21
+ return b
22
+ }
23
+
24
+ func min (a , b int ) int {
25
+ if a < b {
26
+ return a
27
+ }
28
+ return b
29
+ }
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ public int findGCD (int [] nums ) {
3
+ int a = 1 , b = 1000 ;
4
+ for (int num : nums ) {
5
+ a = Math .max (a , num );
6
+ b = Math .min (b , num );
7
+ }
8
+ return gcd (a , b );
9
+ }
10
+
11
+ private int gcd (int a , int b ) {
12
+ return b > 0 ? gcd (b , a % b ) : a ;
13
+ }
14
+ }
Original file line number Diff line number Diff line change
1
+ class Solution :
2
+ def findGCD (self , nums : List [int ]) -> int :
3
+ def gcd (a , b ):
4
+ return gcd (b , a % b ) if b > 0 else a
5
+
6
+ return gcd (max (nums ), min (nums ))
You can’t perform that action at this time.
0 commit comments