【Leetcode 2190 】 数组中紧跟 key 之后出现最频繁的数字 —— 哈希表

给你一个下标从 0 开始的整数数组 nums ,同时给你一个整数 key ,它在 nums 出现过。

统计nums 数组中紧跟着 key 后面出现的不同整数 target 的出现次数。换言之,target 的出现次数为满足以下条件的 i 的数目:

  • 0 <= i <= n - 2
  • nums[i] == key
  • nums[i + 1] == target

请你返回出现 最多 次数的target 。测试数据保证出现次数最多的 target 是唯一的。

示例 1:

复制代码
输入:nums = [1,100,200,1,100], key = 1
输出:100
解释:对于 target = 100 ,在下标 1 和 4 处出现过 2 次,且都紧跟着 key 。
没有其他整数在 key 后面紧跟着出现,所以我们返回 100 。

示例 2:

复制代码
输入:nums = [2,2,2,2,3], key = 2
输出:2
解释:对于 target = 2 ,在下标 1 ,2 和 3 处出现过 3 次,且都紧跟着 key 。
对于 target = 3 ,在下标 4 出出现过 1 次,且紧跟着 key 。
target = 2 是紧跟着 key 之后出现次数最多的数字,所以我们返回 2 。

提示:

  • 2 <= nums.length <= 1000
  • 1 <= nums[i] <= 1000
  • 测试数据保证答案是唯一的。

哈希表

TypeScript 复制代码
function mostFrequent(nums: number[], key: number): number {
  const cnt = new Map<number, number>();
  let count = 0;
  let max = 0;
  const n = nums.length;
  for (let i = 0; i < n; i++) {
    if (nums[i] === key) {
      const next = nums[i + 1];
      cnt.set(next, (cnt.get(next) || 0) + 1);
      if (cnt.get(next)! > count) {
        count = cnt.get(next)!;
        max = next;
      }
    }
  }
  return max;
}
相关推荐
程序员-King.3 小时前
day158—回溯—全排列(LeetCode-46)
算法·leetcode·深度优先·回溯·递归
search73 小时前
前端设计:CRG 3--CDC error
前端
治金的blog4 小时前
vben-admin和vite,ant-design-vue的结合的联系
前端·vscode
月挽清风4 小时前
代码随想录第七天:
数据结构·c++·算法
小O的算法实验室4 小时前
2026年AEI SCI1区TOP,基于改进 IRRT*-D* 算法的森林火灾救援场景下直升机轨迹规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
小郭团队4 小时前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
充值修改昵称4 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法
利刃大大5 小时前
【Vue】Vue2 和 Vue3 的区别
前端·javascript·vue.js
Deepoch5 小时前
Deepoc数学大模型:发动机行业的算法引擎
人工智能·算法·机器人·发动机·deepoc·发动机行业
Lhuu(重开版5 小时前
JS:正则表达式和作用域
开发语言·javascript·正则表达式