Skip to content

Commit 534b7cd

Browse files
committed
feat: add solutions to lc problem: No.1979
1979.Find Greatest Common Divisor of Array
1 parent e502446 commit 534b7cd

File tree

6 files changed

+219
-1
lines changed

6 files changed

+219
-1
lines changed

solution/1900-1999/1979.Find Greatest Common Divisor of Array/README.md

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,107 @@ nums 中最大的数是 3
5151
<li><code>1 &lt;= nums[i] &lt;= 1000</code></li>
5252
</ul>
5353

54-
5554
## 解法
5655

5756
<!-- 这里可写通用的实现逻辑 -->
5857

58+
最大公约数算法:
59+
60+
```java
61+
int gcd(int a, int b) {
62+
return b > 0 ? gcd(b, a % b) : a;
63+
}
64+
```
65+
5966
<!-- tabs:start -->
6067

6168
### **Python3**
6269

6370
<!-- 这里可写当前语言的特殊实现逻辑 -->
6471

6572
```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
6677

78+
return gcd(max(nums), min(nums))
6779
```
6880

6981
### **Java**
7082

7183
<!-- 这里可写当前语言的特殊实现逻辑 -->
7284

7385
```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+
```
74122

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+
}
75155
```
76156

77157
### **...**

solution/1900-1999/1979.Find Greatest Common Divisor of Array/README_EN.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,86 @@ The greatest common divisor of 3 and 3 is 3.
5858
### **Python3**
5959

6060
```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
6165

66+
return gcd(max(nums), min(nums))
6267
```
6368

6469
### **Java**
6570

6671
```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+
```
67108

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+
}
68141
```
69142

70143
### **...**
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
};
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
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+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
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))

0 commit comments

Comments
 (0)