【发布时间】:2020-01-16 17:48:07
【问题描述】:
最近的CodeSignal Challenge 是计算 1000C500 (mod 1e9+7),结果我输了。
我所有的试验都超过了时间限制。这是best JS solution by psr。谁能解释这一行发生了什么?我学习了 ES6,但不知道它的语法 f[o = n + 1/k] = o in f ...
f = nCk = (n, k) => f[o = n + 1/k] = o in f
? ...
: ...
? n && ...
: ...
有些行被屏蔽以避免违反规则
【问题讨论】:
-
o = n + 1/k; f[o] = o in f;的缩写。 -
请注意,Stack Overflow 几乎没有关于从任何地方发布代码的规则。您从中复制代码的地方可能有禁止从其站点复制代码的规则。通过在此处复制代码,您将根据 CC-by-SA 4.0 许可(重新)许可代码。 “psr”可能对此感到满意,也可能不满意。
-
@Barmar 谢谢,但我仍然对
f[o] = o in f感到困惑o是新分配的小数,f[o]=o是将 o 分配到 f 的属性 o 中?并检查它是否是in f?? @HereticMonkey 谢谢提醒,屏蔽几行可以吗? -
o in f被用作三元表达式中的条件。因此,如果o已经是f对象中的一个键,则它分配一个值,如果这是一个新键,则分配一个不同的值。 -
这在使用对象属性作为计数器时很常见;您第一次将计数器初始化为
1,随后将其递增。
标签: javascript math combinations