本文主要是介绍力扣:1979. 找出数组的最大公约数(Java),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 题目描述:
- 输入:
- 输出:
- 代码实现:
题目描述:
给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
输入:
nums = [2,5,6,9,10]
输出:
2
解释:
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2
代码实现:
class Solution {public int findGCD(int[] nums) {/** 排序,再调用最大公约数函数* Arrays.sort(nums);* return gcd(nums[nums.length - 1], nums[0]);*///不排序,打擂台的形式int max = nums[0];// 求最大值int min = nums[0];// 最最小值for (int i = 0; i < nums.length; i++) {// 遍历一次,得到最大最小max = Math.max(max, nums[i]);min = Math.min(min, nums[i]);}return gcd(max, min);// 调用最大公约数函数}public int gcd(int a, int b) {/*第一种方法:递归* if (a == 0) {//递归出口* return b;* }* if (b == 0) {//递归出口* return a;* }* return gcd(b, a % b);//辗转相除法:gcd(a,b) = gcd(b,a%b)*///第二种方法:正常辗转相除int remainder = -1;// 余数while (remainder != 0) {// 余数为0跳出循环remainder = a % b;// 计算余数a = b;// 被除数变余数b = remainder;// 余数变除数}return a;// 返回最后一轮的被除数}
}
这篇关于力扣:1979. 找出数组的最大公约数(Java)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!