【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;
}
相关推荐
东风破_7 分钟前
JWT 1:从一个登录请求开始,理解 React 项目里的 API 层与 Mock
前端·后端
东风破_12 分钟前
JWT 3:为什么 Token 要放进 Authorization?Axios 拦截器到底解决了什么?
前端·后端
东风破_13 分钟前
JWT 5:路由守卫是什么?把整个 JWT 登录鉴权流程串起来
前端·后端
东风破_14 分钟前
JWT 2:HTTP 是无状态的,为什么登录成功后还要给 Token?
前端·后端
东风破_21 分钟前
JWT 4:Zustand 到底解决了什么?为什么登录状态要放进 Store?
前端·后端
IT_陈寒27 分钟前
Vite动态导入差点让我秃头,原来问题出在这
前端·人工智能·后端
北风toto1 小时前
中缀、前缀、后缀表达式
算法·软件设计师
白泽_hunter1 小时前
项目里最常见的 5 个 this 指向坑:从规则到实战彻底讲透
前端
听取WA声一片(无恶意)1 小时前
CSP-J/CSP-S 深度优先搜索(DFS)完全讲义
c++·算法·深度优先
宿6741 小时前
vue3-pinia
前端·vue.js