Skip to content

Commit c6056b6

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

File tree

6 files changed

+200
-3
lines changed

6 files changed

+200
-3
lines changed

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

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,100 @@ 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
66-
73+
class Solution:
74+
def findGCD(self, nums: List[int]) -> int:
75+
return gcd(max(nums), min(nums))
6776
```
6877

6978
### **Java**
7079

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

7382
```java
83+
class Solution {
84+
public int findGCD(int[] nums) {
85+
int a = 1, b = 1000;
86+
for (int num : nums) {
87+
a = Math.max(a, num);
88+
b = Math.min(b, num);
89+
}
90+
return gcd(a, b);
91+
}
92+
93+
private int gcd(int a, int b) {
94+
return b > 0 ? gcd(b, a % b) : a;
95+
}
96+
}
97+
```
98+
99+
### **C++**
100+
101+
```cpp
102+
class Solution {
103+
public:
104+
int findGCD(vector<int>& nums) {
105+
int a = 0, b = 1000;
106+
for (int num : nums)
107+
{
108+
a = max(a, num);
109+
b = min(b, num);
110+
}
111+
return gcd(a, b);
112+
}
113+
};
114+
```
74115
116+
### **Go**
117+
118+
```go
119+
func findGCD(nums []int) int {
120+
a, b := 0, 1000
121+
for _, num := range nums {
122+
a = max(a, num)
123+
b = min(b, num)
124+
}
125+
return gcd(a, b)
126+
}
127+
128+
func gcd(a, b int) int {
129+
if b > 0 {
130+
return gcd(b, a%b)
131+
}
132+
return a
133+
}
134+
135+
func max(a, b int) int {
136+
if a > b {
137+
return a
138+
}
139+
return b
140+
}
141+
142+
func min(a, b int) int {
143+
if a < b {
144+
return a
145+
}
146+
return b
147+
}
75148
```
76149

77150
### **...**

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

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,79 @@ The greatest common divisor of 3 and 3 is 3.
5858
### **Python3**
5959

6060
```python
61-
61+
class Solution:
62+
def findGCD(self, nums: List[int]) -> int:
63+
return gcd(max(nums), min(nums))
6264
```
6365

6466
### **Java**
6567

6668
```java
69+
class Solution {
70+
public int findGCD(int[] nums) {
71+
int a = 1, b = 1000;
72+
for (int num : nums) {
73+
a = Math.max(a, num);
74+
b = Math.min(b, num);
75+
}
76+
return gcd(a, b);
77+
}
78+
79+
private int gcd(int a, int b) {
80+
return b > 0 ? gcd(b, a % b) : a;
81+
}
82+
}
83+
```
84+
85+
### **C++**
86+
87+
```cpp
88+
class Solution {
89+
public:
90+
int findGCD(vector<int>& nums) {
91+
int a = 0, b = 1000;
92+
for (int num : nums)
93+
{
94+
a = max(a, num);
95+
b = min(b, num);
96+
}
97+
return gcd(a, b);
98+
}
99+
};
100+
```
67101
102+
### **Go**
103+
104+
```go
105+
func findGCD(nums []int) int {
106+
a, b := 0, 1000
107+
for _, num := range nums {
108+
a = max(a, num)
109+
b = min(b, num)
110+
}
111+
return gcd(a, b)
112+
}
113+
114+
func gcd(a, b int) int {
115+
if b > 0 {
116+
return gcd(b, a%b)
117+
}
118+
return a
119+
}
120+
121+
func max(a, b int) int {
122+
if a > b {
123+
return a
124+
}
125+
return b
126+
}
127+
128+
func min(a, b int) int {
129+
if a < b {
130+
return a
131+
}
132+
return b
133+
}
68134
```
69135

70136
### **...**
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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+
};
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: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
class Solution:
2+
def findGCD(self, nums: List[int]) -> int:
3+
return gcd(max(nums), min(nums))

0 commit comments

Comments
 (0)