当前位置: 首页 > news >正文

LeetCode 每日一题笔记 日期:2026.05.20 题目:2657. 找到前缀公共数组

LeetCode 每日一题笔记

0. 前言

  • 日期:2026.05.20
  • 题目:2657. 找到前缀公共数组
  • 难度:中等
  • 标签:数组、哈希表、计数

1. 题目理解

问题描述
给你两个长度为n、下标从0开始的整数数组AB
定义前缀公共数组C为:C[i]等于数组AB中下标从0i的部分中公共元素的个数
返回前缀公共数组C

示例

输入:A = [1,3,2,4], B = [3,1,2,4]
输出:[0,2,3,4]

2. 解题思路

核心观察

  • 一个数字成为公共元素,当且仅当它在AB的前i项中各出现一次
  • 用计数/哈希表统计每个数字出现次数,次数达到 2时,说明是公共元素。

算法步骤

  1. 遍历每个下标i
  2. 依次把A[i]B[i]加入统计。
  3. 每次加入后检查计数是否为 2,若是则公共数+1
  4. 把当前公共数存入结果数组。

3. 代码实现

packagelc2657;importjava.util.HashMap;classSolution{publicint[]findThePrefixCommonArray(int[]A,int[]B){intn=A.length;intcount=0;int[]res=newint[n];HashMap<Integer,Integer>map=newHashMap<>();for(inti=0;i<n;i++){map.computeIfAbsent(A[i],k->0);map.put(A[i],map.get(A[i])+1);if(map.get(A[i])==2){map.put(A[i],0);count++;}map.computeIfAbsent(B[i],k->0);map.put(B[i],map.get(B[i])+1);if(map.get(B[i])==2){map.put(B[i],0);count++;}res[i]=count;}returnres;}}

4. 代码优化说明

减少if分支判断,用数组替代哈希表更快更简洁:

classSolution{publicint[]findThePrefixCommonArray(int[]A,int[]B){intn=A.length;int[]res=newint[n];int[]count=newint[n+1];intcommon=0;for(inti=0;i<n;i++){if(++count[A[i]]==2)common++;if(++count[B[i]]==2)common++;res[i]=common;}returnres;}}

5. 复杂度分析

  • 时间复杂度O(n)O(n)O(n)
    一次遍历完成所有统计与赋值。
  • 空间复杂度O(n)O(n)O(n)
    使用计数数组/哈希表存储元素出现次数。

6. 总结

  • 核心思路:计数统计 + 一次遍历
  • 关键:元素出现两次即为公共元素,直接计数即可。
  • 优化版用数组替代哈希表,速度更快、代码更短。
http://www.zskr.cn/news/1335975.html

相关文章:

  • 保姆级教程:让Playwright测试失败时,Allure报告自动带上截图和视频(pytest-playwright 0.3.0+)
  • 2026年热镀锌地脚双头U型不锈钢螺栓正规生产厂家货源与产品优势 - 栗子测评
  • django-tenants测试策略:单元测试、集成测试与持续集成
  • CANN/asc-devkit原子减法操作
  • jQuery虚拟键盘Keyboard:打造现代化Web应用输入解决方案的完整指南
  • TikTok-Live-Connector实战项目:构建自动化聊天机器人系统的完整指南
  • LicenseFinder扩展开发指南:如何为新的包管理器添加支持
  • 如何在5分钟内快速上手RetinaFace人脸检测库
  • 杭州书法艺考机构哪家强?2026浙江书法联考培训机构推荐:杭州专业书法高考工作室+杭州口碑好书法高考培训机构合集 - 栗子测评
  • 为什么选择snnTorch?5个理由让你爱上这个脉冲神经网络框架
  • 手把手图解SIS问题:用Python模拟寻找‘短整数解’的完整流程
  • 从一道CTF题Get新技能:用SageMath破解分圆多项式RSA(附完整脚本)
  • 别再死记硬背了!用Python实现并查集(DSU)搞定朋友圈、合并账户这些LeetCode题
  • 3步实战Windows风扇控制:FanControl深度配置指南
  • Tere跨平台部署指南:在Linux、Windows和macOS上的终极安装配置教程
  • Medieval Fantasy City Generator 实战:集成到游戏引擎的完整方案
  • EditorConfig-Sublime插件测试与调试:完整开发者手册
  • 2026水果罐头源头厂家指南必看!甜玉米罐头批发厂家全梳理 - 栗子测评
  • GLSL优化器架构深度解析:从GLSL输入到优化输出的完整流程
  • Cookies.js 安全最佳实践:防止XSS攻击与数据加密方案
  • 《Windows Sysinternals实战指南》PsTools 学习笔记(7.7):进程性能选项——优先级、CPU 亲和性与稳定落地
  • HTML会代替Markdown吗?为什么?
  • rebar3与Hex.pm集成指南:Erlang包管理的完整解决方案
  • Tunasync调度器工作原理:智能任务分配与并发控制完全指南
  • 《Windows Sysinternals实战指南》PsTools 学习笔记(7.5):PsExec 的备用凭据与安全基线
  • 新能源充电桩厂家有哪些?2026新能源充电桩厂家优选:权威电动汽车充电桩厂家+电动汽车充电桩品牌榜单 - 栗子测评
  • linux PATH介绍
  • 科梁信息冲刺港股:年营收6亿 利润9303万 桑苏明控制41%股权
  • vim入门配置教程
  • 《Sysinternals实战指南》进程和诊断工具学习笔记(8.17):LiveKd 实战——运行方式、常用参数、现场采集套路