给你一个整数数组 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);
posted @ 2026-08-03 11:14  云中裔鹤  阅读(0)  评论(0)    收藏  举报