记录每日LeetCode 2427.公因子的数目 Java实现

题目描述:

给你两个正整数 a 和 b ,返回 a 和 b 的 公 因子的数目。

如果 x 可以同时整除 a 和 b ,则认为 x 是 a 和 b 的一个 公因子 。

初始代码:

class Solution {
    public int commonFactors(int a, int b) {

    }
}

示例1:

输入:a = 12, b = 6
输出:4
解释:12 和 6 的公因子是 1、2、3、6 。

示例2:

输入:a = 25, b = 30
输出:2
解释:25 和 30 的公因子是 1、5 。

参考答案:

//需要将a与b都遍历一次 并且创建了Set集合 时间、空间复杂度较高
class Solution {
    public int commonFactors(int a, int b) {
        int count = 0;
        Set<Integer> set = new HashSet<>();
        for(int i = 1;i <= a;++i){
            if(a % i == 0) set.add(i);
        }
        for(int i = 1;i <= b;++i){
            if(b % i == 0 && !set.add(i)) count++;
        }
        return count;
    }
}
//对a与b其中一个最小值遍历一次即可 优化了时间、空间复杂度
class Solution {
    public int commonFactors(int a, int b) {
        int count = 0;
        int min = Math.min(a,b);
        for(int i = 1;i <= min;++i){
            if(a % i == 0 && b % i == 0) count++;
        }
        return count;
    }
}

猜你喜欢

转载自blog.csdn.net/m0_65563175/article/details/129969364