(38)找出数组的最大公约数


每日一言

无论在什么样的社会里,一个人的理想,是为了多数人的利益,为了社会的进步,对社会生产力的发展起了促进作用,也就是说,合乎社会历史的发展规律,就是伟大的理想。——陶铸


1. 题目

题目链接:找出数组的最大公约数

给你一个整数数组 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


2. 解题思路

一步一步来,先找最大最小值,再求两数的最大公约数


3. 代码

int findGCD(int* nums, int numsSize) {
    int min = nums[0];
    int max = nums[0];

    //找最大和最小值
    for(int i=1;i<numsSize;i++)
    {
        if(min > nums[i])
            min = nums[i];
        if(max < nums[i])
            max = nums[i];
    }

    //求最大公约数,辗转相除法
    int tmp = 0;
    while(tmp = max%min)
    {
        max = min;
        min = tmp;
    }

    return min;//返回最大公约数
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值