【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;
}
相关推荐
im_AMBER14 小时前
Leetcode 103 反转链表 II
数据结构·c++·笔记·学习·算法·leetcode
小二·14 小时前
Python Web 开发进阶实战:微前端架构初探 —— 基于 Webpack Module Federation 的 Vue 微应用体系
前端·python·架构
rgeshfgreh14 小时前
回溯算法精解:排列、子集与组合
python·算法·深度优先
阿呆59114 小时前
html前端开发注释的写法
前端·html
pusheng202514 小时前
守护能源与数据的安全防线:从UL 2075标准解析储能及数据中心氢探技术的演进
前端·安全
.又是新的一天.14 小时前
【前端Web开发HTML5+CSS3+移动web视频教程】02 html - 列表、表格、表单
前端·html·html5
程序员鱼皮14 小时前
你的 IP 归属地,是咋被挖出来的?
前端·后端·计算机·程序员·互联网·编程经验
小酒星小杜14 小时前
在AI时代,技术人应该每天都要花两小时来构建一个自身的构建系统 - 总结篇
前端·vue.js·人工智能
燕山石头14 小时前
jeecg统一异常处理根据不同模块返回指定响应信息
前端
rit843249914 小时前
有限元算法求解铁木辛柯梁梁静力问题实例
算法