小编GAU*_*ATI的帖子

给定一个数组,计算总和为60的倍数的对

给定一个数组,如何找到加起来为60的一对(两个值)或一个可被60整除的值.注意:必须比O(N ^ 2)快.

输入:[10,50,30,90]输出:2推理:10 + 50 = 60,30 + 90 = 120(120可被60整除)

输入:[60,60,60]输出:3推理:60 + 60 = 120,60 + 60 = 120,60 + 60 = 120

我下面的代码将在O(N)时间内运行,但我不知道如何处理彼此相等的对(即如果你在数组中有2 30个值会给你的计数器加1 ,但是如果你在数组中有3 30个值可以为你的计数器增加3个).我想我应该创建一个组合函数(即2C2或3C2),但这是一个线性函数,并不会只是使函数回到O(N ^ 2)?

values(myList) {
    var obj = {};
    var count = 0;

    // loop through array and mod each value and insert it into a dictionary
    myList.forEach((elem, index) => {
        if (!obj.hasOwnProperty(elem % 60)) {
            obj[elem % 60] = 1;
        } else {
            obj[elem % 60]++;
        }
    });

    for (var keys …
Run Code Online (Sandbox Code Playgroud)

javascript algorithm big-o time-complexity

5
推荐指数
1
解决办法
427
查看次数

标签 统计

algorithm ×1

big-o ×1

javascript ×1

time-complexity ×1