题目链接:1979. 找出数组的最大公约数(简单)
算法原理:
解法:最大公约数
1ms击败90.60%
时间复杂度O(N)
思路就很简单,先遍历一遍找到最大值和最小值(初始化可以根据题目范围来定),然后返回二者的最大公约数 GCD 即可
至于 GCD 的实现,可以参考👇
蓝桥杯关键知识点速记(用于写法速记)
D.二分查找-二分答案-第K小/第K大------878. 第 N 个神奇数字(提供了两种不同的写法)
Java代码:
java
class Solution {
//1979. 找出数组的最大公约数
public int findGCD(int[] nums) {
int min=1000,max=1;
for(int x:nums){
if(x>max) max=x;
if(x<min) min=x;
}
return gcd(max,min);
}
private int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
}