我正在尝试进行算法挑战。我从一个完整的答案中看到了这段代码。我是javascript的新手,所以我不完全确定代码。我知道代码的第一部分非常接受输入并将其转换为地图。然后初始化一个matchingPair数组和一个计数器。我几乎迷失在for循环部分。不太确定matchingPairs[""+c[i]] = matchingPairs[""+c[i]] || 0;
的作用。我猜测for循环是将匹配对的所有元素添加到数组并添加到计数器。
function main() {
var n = parseInt(readLine());
c = readLine().split(' ');
c = c.map(Number);
var matchingPairs = {};
var matchingPairCount = 0;
for(var i=0; i< c.length; i++) {
matchingPairs[""+c[i]] = matchingPairs[""+c[i]] || 0;
matchingPairs[""+c[i]] += 1;
if (matchingPairs[""+c[i]] % 2 === 0) {
matchingPairCount += 1;
}
}
console.log(matchingPairCount);
}
答案 0 :(得分:0)
一个更简单的例子
a = {}
a["b"] = a["b"] || 0
console.log(a) // {b: 0}
a
设置为空对象。 a["b"]
尚未设置为任何内容,因此在访问时会返回undefined
。
未定义是假的 - 所以这有效地将a["b"]
设置为0
。
再举一个例子;
a = {b: 5}
a["b"] = a["b"] || 0
console.log(a) // {b: 5}
这个例子的唯一区别是a["b"]
是真实的(即,它返回5而不是未定义)。
这是一种将变量设置为值的javascript方式,前提是它尚未设置为其他。
答案 1 :(得分:0)
提供了一串空格分隔的数字。
计算每个数字的计数。
每次计数均匀时,matchingPairCount
会递增。
简而言之:它正在计算成对的匹配数字。
n
未使用?