给出1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那2个缺失的元素

本文探讨如何在给定1到n的不完全排列中,使用常数空间复杂度找出缺失的两个元素。内容涉及算法设计与分析,适合面试准备和腾讯等公司技术面试。
题目:

   给出
1..n的一个排列,其中缺少2个元素,用O(1)的空间找到那
众所周知,王老师非常喜欢买盲盒,他在家里一共收集了 n 个同一系列盲盒玩偶,用一个数字 a i ​ 表示第 i 个玩偶属于这个系列中的第几个玩偶,这个系列有非常多的玩偶,显然王老师并没有收集全所有的玩偶。 现在王老师准备把这 n 个玩偶排成新的一排 b i ​ ,而王老师是个完美主义者,他认为对于第 i 个玩偶来说存在一个所谓的不完美度,指的是 b 1 ​ ∼b i ​ 这些玩偶中缺少的第一个该系列玩偶编号 例如有 3 个玩偶排列完以后编号分别为 0,2,1 对第 1 个玩偶来说,不完美度是 1,因为 0 号玩偶存在,第一个缺少的是 1 号玩偶 对第 2 个玩偶来说,不完美度是 1,因为 0,2 号玩偶存在,第一个缺少的是 1 号玩偶 对第 3 个玩偶来说,不完美度是 3,因为 0,1,2 号玩偶存在,第一个缺少的是 3 号玩偶 对于以上这个玩偶排列方案,总的不完美度为 1+1+3=5 现在石老师想故意气一气王老师,他想知道这 n 个玩偶,怎么排列可以使得不完美度最大? 输入格式 输入第一行包含一个正整数 n,表示有 n 个玩偶 接下来一行包含 n 个整数 a i ​ ,分别表示每个玩偶在系列中的编号(最小为 0) 输出格式 输出一组可以让玩偶不完美度最大的方案,如果有多组方案,请输出字典序最小的那一组方案 样例输入 1 7 1 3 3 4 2 0 9 样例输出 1 0 1 2 3 4 3 9
最新发布
08-24
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值