页面加载中…
通过率 25% · 提交 8 · 通过 2
小慕有一个长度为n的,他可以选择两个位置,然后交换这两个位置上的数。 他想知道能否通过,使得存在一个,是长度为k的排列。 排列是指一个长度为len的整数数组,数组中包含1到len的每个数,且每个数只出现一次。
这类题属于华为 OD 机考真题方向中「滑动窗口 / 哈希表」方向的高频题型,通常考察对「滑动窗口 / 哈希表」的建模能力与边界条件处理。掌握本题的解题思路后,可举一反三应对同类真题方向,稳步提升机考通过率。
提示:带虚线的词点一下有通俗解释。
第一行两个整数n,k,表示排列长度和连续子段长度。
第二行n个整数a1, a2, ..., an,表示排列。
1 <= k <= n <= 10^5
如果能够通过最多一次交换,存在一个连续子段是排列,输出YES,并输出交换的位置:先输出一个整数x (0 <= x <= 1),然后输出x行,每行两个整数u, v,表示交换位置u, v (u < v)
否则输出NO。
示例 1
输入示例
5 3 1 2 3 4 5
输出示例
YES 0
时间限制 1000 ms · 内存限制 128 MB
本平台为独立第三方培训机构,与华为技术有限公司无任何关联;课程的服务内容与权益以购买协议为准,学习效果因个人情况而异。「华为 OD」「华为可信」等仅为对岗位与考试方向的客观描述,相关商标归各自权利人所有。
登录后可查看你在本题的历史提交,以及每次的各用例通过情况。
© 2026 广州慕课网络科技有限公司 · 吴师兄学算法官网 版权所有