小明编程记 - 第十七章 两数之和

画了一个飞剑的示意图。如下:

至于函数名的话,就在另一面吧。


小明离开坊市,继续在宗门行走着。

他本想去其他分脉看看,但天色已晚,只好放弃,回到了剑峰。

翌日清晨,小明早早来到练习场,发现张三已在场等待。

“师兄,今天学什么?”小明迫不及待地问,他渴望掌握更多剑术。

“今天不练剑术,而是巩固你的根基。”张三摇头道,“你虽已至筑基中期,根基却不够稳固。筑基,正是打牢修行之基,若不扎实,后续修行将步履维艰。”

小明微微一愣,连忙问道:“那我该如何稳固根基?”

“首先,对于你所选择的道引,JavaScript,你知道多少?”

小明挠了挠头:“呃……我知道 varletconst,还知道 ifforfunction……这些术法。”

“那你可知道,通过将这些基本术法结合,能够施展更加强大的术法?”

小明点头。

“很好。”张三目光犀利,“那便考验一下你的基础。”

“请师兄赐教!”

张三负手而立,朗声道:“我会赋予你一组剑气,每道剑气威力各不相同。随后,我会出剑攻向你,你必须在我的剑气临身前,从中挑选出两道剑气,使其合璧,刚好抵消我的剑气之力。若无法及时找到合适的剑诀,你将无法接下此剑。”

“听明白了吗?”

小明深吸一口气,点了点头:“明白!”

张三挥手,一组剑气 [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]

“就是它!”小明心念一动,催动剑气 27,交织融合,迎向张三的攻势!

剑气相撞,灵光炸裂,气浪席卷整个练习场。

当尘埃散去,小明依旧稳立,而张三的剑气已然化作虚无。

“不错,小明。”张三赞扬着小明。“你是怎么做到的?”


小明编程记 - 第十七章 两数之和
http://www.inksha.com/archives/xiao-ming-bian-cheng-ji---di-shi-qi-zhang
作者
inksha
发布于
2025年03月26日
许可协议