1. Job Roadmap
  2. Home
  3. Problem Set
  4. codenotelist
  5. Forum
  6. course
  7. Shore Share Sessions
  8. Record
  1. Login
  2. Sign Up
  3. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
    ZhContent TextSol video solution AI分析

思路:双指针

考虑双指针,枚举右端点,移动左端点,直到如果左端点被删除后不满足条件时,则停止。

更新答案时,需要考虑是否每个 x∈[1,m]x\in [1, m]x∈[1,m] 都有至少 b[x]b[x]b[x] 个,可以用一个变量来统计达到最低数量的数的个数。

时间复杂度:O(n)O(n)O(n)

代码

P3784.最短区间

    1000ms Tried: 282 Accepted: 77 Difficulty: 5
    算法与标签>双指针

题目描述

有一个长度为 nnn 的数组 aaa 和 长度为 mmm 的数组 bbb ,下标均从 111 开始。

现在,想让你找出一个最短的区间 [l,r](1≤l≤r≤n)[l, r] (1\leq l\leq r\leq n)[l,r](1≤l≤r≤n) , 这个区间中数 xxx 的数量至少出现了 b[x]b[x]b[x] 次。

输入描述

第一行,两个整数 n,m(1≤n,m≤105)n, m(1\leq n,m\leq 10^5)n,m(1≤n,m≤105) 分别表示数组 aaa 和数组 bbb 的长度。
第二行,nnn 个整数表示数组 aaa 。 第三行,mmm 个整数表示数组 bbb 。

输出描述

一个整数,表示最短区间的长度,如果不存在,则输出 -1 。

样例

输入

6 4
1 1 4 5 1 4
2 0 0 2

输出

5

说明

区间 [2,6][2, 6][2,6] 满足 111 和 444 出现了至少两次,222 和 333 出现了至少 000 次。 可以证明没有更短的区间满足了。

开通会员即可查看完整视频题解: 1.题目讲解 2.思路分析 3.逐行代码手写

登录后即可使用 AI 分析。

模式
倒计时时长
:

最长 10 小时 59 分;应用后按此时长重新开始。

提示:点击提交记录在左侧题面区域查看详情
题库
AI分析设置
留空使用官方API Key,每天有次数限制(自定义API Key仅限会员和管理员使用,不限次数)
会员和管理员可切换模型;切到 Kimi/智谱/通义/豆包时需填写对应供应商 API Key
升级会员,可将运行与提交冷却时间缩短至 1 秒起

Status

  • Judging Queue
  • Service Status

Development

  • Open Source

Support

  • Help
  • Contact Us

About

  • About
  • Privacy
  • Terms of Service
  • Copyright Complaint
  1. Language
    1. English
    2. 한국어
    3. 简体中文
    4. 正體中文
  2. Legacy mode
  3. Theme
    1. Light
    2. Dark
  1. 京ICP备2025123107号-1
  2. Worker 0, 82ms
  3. Powered by Hydro v5.0.0-beta.18 Community
CLOSE


ScanQRCodePrompt

请使用微信扫描下方二维码完成注册

Forgot password or username?