给你一个整数数组 nums
,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
示例 1:
输入:nums = [2,5,6,9,10]
输出:2
解释:
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2
示例 2:
输入:nums = [7,5,6,8,3]
输出:1
解释:
nums 中最小的数是 3
nums 中最大的数是 8
3 和 8 的最大公约数是 1
示例 3:
输入:nums = [3,3]
输出:3
解释:
nums 中最小的数是 3
nums 中最大的数是 3
3 和 3 的最大公约数是 3
提示:
2 <= nums.length <= 1000
1 <= nums[i] <= 1000
class Solution {
public int findGCD(int[] nums) {
int minNum = findMin(nums);
int maxNum = findMax(nums);
return GCD(minNum,maxNum);
}
private int findMin(int[] nums){
int minNum = nums[0];
for(int i=0;i<nums.length;i++){
if(nums[i]<minNum){
minNum = nums[i];
}
}
return minNum;
}
private int findMax(int[] nums){
int maxNum = nums[0];
for(int i=0;i<nums.length;i++){
if(nums[i]>maxNum){
maxNum = nums[i];
}
}
return maxNum;
}
/*
欧拉算法计算最大公约数GCD(a,b)
1)如果b=0,返回a,同时过程结束;否则进入第二步
2)r=a%b
3)将b赋值a,r赋值b,返回第一步
*/
private int GCD(int a,int b){
if(b==0){
return a;
}else{
int r = a % b;
return GCD(b,r);
}
}
}