You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript Map实现Tournament Winner算法的积分更新问题

Tournament Winner 算法题问题修复

核心问题说明

  • 辅助函数updateScores缺少积分累加逻辑,对Map的取值、赋值方法使用不熟练
  • 主函数未同步更新当前最高积分的队伍,最终返回值永远为空字符串

Map 常用操作说明

你已经用到了Map的has()、set()方法,实现积分累加只需要新增get()方法的使用:

  • Map.get(key):获取指定key对应的存储值,key不存在时返回undefined
  • 累加逻辑:先取出队伍当前积分,加上获胜奖励的3分后,再用set()方法写回Map即可

修复后的完整代码

function tournamentWinner(competitions, results) {
  let currentWinningTeam = "";
  const scoreTracker = new Map();
  scoreTracker.set(currentWinningTeam, 0);
  // 遍历所有比赛
  for (const index in competitions) {
    const result = results[index];
    const [homeTeam, awayTeam] = competitions[index];
    const teamWhoWon = result === 0 ? awayTeam : homeTeam;
    // 更新获胜队伍积分
    updateScores(teamWhoWon, 3, scoreTracker)
    // 同步更新当前最高积分队伍
    if (scoreTracker.get(teamWhoWon) > scoreTracker.get(currentWinningTeam)) {
      currentWinningTeam = teamWhoWon;
    }
  }
  return currentWinningTeam;
}

function updateScores(teamWhoWon, points, scoreTracker) {
  // 不存在的队伍默认积分为0,累加后重新赋值
  const currentScore = scoreTracker.get(teamWhoWon) || 0;
  scoreTracker.set(teamWhoWon, currentScore + points);
}

// 测试用例
console.log(
  tournamentWinner(
    [
      ['HTML', '#C'],
      ['#C', 'Python'],
      ['Python', 'HTML'],
    ],
    [0, 0, 1]
  )
);

运行结果说明

你提供的测试用例运行后最终返回Python,符合积分规则:

  • #C 获胜1次:积3分
  • Python 获胜2次:积6分
  • HTML 获胜0次:积0分

内容的提问来源于stack exchange,提问作者dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:04