给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
-
给你一个整数数组 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
点击查看代码
Integer[] nums = {7, 5, 6, 8, 3};
int n = nums.length;
int min, max;
int i;
// 初始化 min 和 max
if (n % 2 == 0) {
// 如果元素个数是偶数,比较前两个元素作为初始值
if (nums[0] > nums[1]) {
max = nums[0];
min = nums[1];
} else {
min = nums[0];
max = nums[1];
}
i = 2; // 从下标 2 开始
} else {
// 如果元素个数是奇数,第一个元素既是 min 也是 max
min = nums[0];
max = nums[0];
i = 1; // 从下标 1 开始
}
// 成对遍历剩余元素
while (i < n - 1) {
if (nums[i] > nums[i + 1]) {
if (nums[i] > max) max = nums[i];
if (nums[i + 1] < min) min = nums[i + 1];
} else {
if (nums[i] < min) min = nums[i];
if (nums[i + 1] > max) max = nums[i + 1];
}
i += 2;
}
int result = 0;
for (int j = min; j > 0; j--) {
if(max%j == 0 && min%j==0){
result =j;
break;
}
}
System.out.println(result);

浙公网安备 33010602011771号