小明编程记 - 第十七章 两数之和
画了一个飞剑的示意图。如下:
至于函数名的话,就在另一面吧。
小明离开坊市,继续在宗门行走着。
他本想去其他分脉看看,但天色已晚,只好放弃,回到了剑峰。
翌日清晨,小明早早来到练习场,发现张三已在场等待。
“师兄,今天学什么?”小明迫不及待地问,他渴望掌握更多剑术。
“今天不练剑术,而是巩固你的根基。”张三摇头道,“你虽已至筑基中期,根基却不够稳固。筑基,正是打牢修行之基,若不扎实,后续修行将步履维艰。”
小明微微一愣,连忙问道:“那我该如何稳固根基?”
“首先,对于你所选择的道引,JavaScript,你知道多少?”
小明挠了挠头:“呃……我知道 var
、let
、const
,还知道 if
、for
、function
……这些术法。”
“那你可知道,通过将这些基本术法结合,能够施展更加强大的术法?”
小明点头。
“很好。”张三目光犀利,“那便考验一下你的基础。”
“请师兄赐教!”
张三负手而立,朗声道:“我会赋予你一组剑气,每道剑气威力各不相同。随后,我会出剑攻向你,你必须在我的剑气临身前,从中挑选出两道剑气,使其合璧,刚好抵消我的剑气之力。若无法及时找到合适的剑诀,你将无法接下此剑。”
“听明白了吗?”
小明深吸一口气,点了点头:“明白!”
张三挥手,一组剑气 [2,7,11,15]
凭空而生,环绕着小明。
随后,向小明挥剑,剑气 9
向着小明袭来。
小明顿时如临大敌。双手不断的施展的术法。将剑气组中的剑气一个个进行对比着。
function 双剑合璧(剑气组, 袭来剑气) {
for (let i = 0; i < 剑气组.length; i++) {
for (let j = i + 1; j < 剑气组.length; j++) {
if (剑气组[i] + 剑气组[j] === 袭来剑气) {
return [i, j]
}
}
}
}
双剑合璧([2, 7, 11, 15], 9) // [0, 1]
小明大喜,迅速锁定第一道剑气 2,第二道剑气 7,正要发出剑诀,然而张三的剑气已然临身——
“砰!”
剑气轰然炸裂,小明被击中,周身环绕的剑气随之消散。
“好痛……”小明揉了揉胸口,虽无实伤,但剑气残留的冲击力令他难以忽视。
他不甘道:“明明就差一点,我已经找到匹配的剑气了!”
张三神色淡然,缓缓道:“你的术法可行,却太慢了。若在实战中,你还需如此逐一尝试,敌剑早已临身。”
小明一震,陷入沉思。
“再来!”
这一次,小明意识到自己必须加快计算速度。他想起了自己在洞天之中所领悟的缓存之术。
张三又是挥手,与上次一样的剑气组环绕着小明。随后挥出与上次一样威力的剑气。
小明迅速推演新的术法。
function 双剑合璧(剑气组, 袭来剑气) {
const 剑气记录 = {}
for (let i = 0; i < 剑气组.length; i++) {
const 剩余威力 = 袭来剑气 - 剑气组[i]
if (剑气记录[剩余威力] !== undefined) {
return [剑气记录[剩余威力], i]
}
剑气记录[剑气组[i]] = i
}
}
双剑合璧([2, 7, 11, 15], 9) // [0, 1]
“就是它!”小明心念一动,催动剑气 2
与 7
,交织融合,迎向张三的攻势!
剑气相撞,灵光炸裂,气浪席卷整个练习场。
当尘埃散去,小明依旧稳立,而张三的剑气已然化作虚无。
“不错,小明。”张三赞扬着小明。“你是怎么做到的?”