美文网首页
1819. 序列中不同最大公约数的数目

1819. 序列中不同最大公约数的数目

作者: 程序员小2 | 来源:发表于2023-01-13 09:44 被阅读0次

题目:

给你一个由正整数组成的数组 nums 。

数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整数。

例如,序列 [4,6,16] 的最大公约数是 2 。
数组的一个 子序列 本质是一个序列,可以通过删除数组中的某些元素(或者不删除)得到。

例如,[2,5,10] 是 [1,2,1,2,4,1,5,10] 的一个子序列。
计算并返回 nums 的所有 非空 子序列中 不同 最大公约数的 数目 。

示例 1:


image.png

输入:nums = [6,10,3]
输出:5
解释:上图显示了所有的非空子序列与各自的最大公约数。
不同的最大公约数为 6 、10 、3 、2 和 1 。

示例 2:
输入:nums = [5,15,40,5,6]
输出:7

java代码:

class Solution {
    public int countDifferentSubsequenceGCDs(int[] nums) {
        int maxVal = Arrays.stream(nums).max().getAsInt();
        boolean[] occured = new boolean[maxVal + 1];
        for (int num : nums) {
            occured[num] = true;
        }
        int ans = 0;
        for (int i = 1; i <= maxVal; i++) {
            int subGcd = 0;
            for (int j = i; j <= maxVal; j += i) {
                if (occured[j]) {
                    if (subGcd == 0) {
                        subGcd = j;
                    } else {
                        subGcd = gcd(subGcd, j);
                    }
                    if (subGcd == i) {
                        ans++;
                        break;
                    }
                }
            }
        }
        return ans;
    }

    public int gcd(int num1, int num2) {
        while (num2 != 0) {
            int temp = num1;
            num1 = num2;
            num2 = temp % num2;
        }
        return num1;
    }
}

相关文章

  • 1819. 序列中不同最大公约数的数目

    1819. 序列中不同最大公约数的数目[https://leetcode-cn.com/problems/numb...

  • 1819. 序列中不同最大公约数的数目

    题目: 给你一个由正整数组成的数组 nums 。 数字序列的 最大公约数 定义为序列中所有整数的共有约数中的最大整...

  • 1819-序列中不同最大公约数的数目

    写在前面 这次周赛的第四题还是比较有意思的,尤其是时间复杂度方面,给的数据范围在10^5,需要O(NlogN)的算...

  • 代码刷题

    1.输入两个正整数,求其最大公约数。 2.最大间隔:给定一个递增序列,a1

  • 算法笔记(7)| 数学问题(1)

    1.最大公约数与最小公倍数 1.最大公约数 最大公约数是指正整数a和b中都能够除尽的最大的数。解决最大公约数是方法...

  • 不同序列dp

    1987. 不同的好子序列数目[https://leetcode-cn.com/problems/number-o...

  • 最大公约数

    最大公约数 自然数d同时是a,b的约数,称d是a和b的公约数,d是a和b的公约数中最大的一个,d就是最大公约数,记...

  • 1071.字符串的最大公因子

    解题思路 定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。最大公约数(Greatest ...

  • 最大公约数

    一、辗转相除法1,循环除 2,迭代除 扩展:a,b最小公倍数=(ab最大公约数^2)a/最大公约数b/最大公约数=...

  • 最大公约数和最小公倍数

    最大公约数 一般用gcd(a,b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法) 如果...

网友评论

      本文标题:1819. 序列中不同最大公约数的数目

      本文链接:https://www.haomeiwen.com/subject/ktdgcdtx.html