题解 | #称砝码#
称砝码
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); }()