题解 | #称砝码#

称砝码

https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

我觉得我逻辑没问题,通过率90%,18/20, 但是三重循环超内存了。。。

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    let arr= [];
    while(line = await readline()){
        arr.push(line);
    }
    let count = parseInt(arr[0]);
    let weight = arr[1].split(' ').map(Number);
    let num = arr[2].split(' ').map(Number);
    let group = [0];    // 包含0,先把0放进去
    for(let i=0;i<count;i++){
        let j=1;
        let gl = group.length;  // 注意这里取一下数组长度,不能在下面用group.length,否则会陷入无限循环
        while(j<=num[i]){
            for(let k=0;k<gl;k++){
                let tmp = weight[i]*j + group[k]; // 在此之前的每一个都加上这个元素
                group.push(tmp);
            }
            j++;
        }
    }
    let my_set = new Set(group);    // 去重
    console.log(my_set.size);
}()

全部评论

相关推荐

孤寡孤寡的牛牛很热情:为什么我2本9硕投了很多,都是简历或者挂,难道那个恶心人的测评真的得认真做吗
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务