算法|找出数组的最大公约数

力扣第255场周赛题目

  • 刷题链接

https://leetcode-cn.com/problems/find-greatest-common-divisor-of-array/

  • 题目描述

给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
示例 1:
输入:nums = [2,5,6,9,10]
输出:2
解释:
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2

  • 分析

当两数中大数除小数能整除时,小数即为两数间最大公约数;不能整除时可从大到小依次尝试,找出最大公约数。至于最大数和最小数将数组排序后取头尾即可。

  • 参考解题
class Solution {
    public int findGCD(int[] nums) {
        int flag = 0;
        Arrays.sort(nums);
        
        if(nums[nums.length - 1] % nums[0] == 0 ){
            flag = nums[0];
        }
        if(nums[nums.length - 1] % nums[0] != 0){
            for( int i = nums[0]; i >= 0 ;i--){
                if(nums[0] % i == 0  &&  nums[nums.length - 1] % i == 0){
                    flag = i;
                    break;
                }
            }
           
        }
        return flag;
    }
}

你可能感兴趣的:(#,算法,算法,leetcode,动态规划,贪心算法,快速排序)