题目地址:
https://leetcode.com/problems/find-greatest-common-divisor-of-array/
给定一个数组 A A A,求其最大和最小数的最大公约数。
代码如下:
public class Solution {
public int findGCD(int[] nums) {
int x = nums[0], y = nums[0];
for (int num : nums) {
x = Math.min(x, num);
y = Math.max(y, num);
}
return gcd(x, y);
}
int gcd(int x, int y) {
return y == 0 ? x : gcd(y, x % y);
}
}
时间复杂度 O ( l A + log min x ∈ A x ) O(l_A+\log \min_{x\in A} x) O(lA+logminx∈Ax),空间 O ( log min x ∈ A x ) O(\log \min_{x\in A} x) O(logminx∈Ax)。