受到题目41. 缺失的第一个正数的启发:
因为最终一定是第i个位置要是i。所以我们不妨从左往右扫描。遇到第一个不是i的,我们就和当前i所在的位置进行交换。
而找到i所在的位置就是使用哈希表来记录每个元素所在的下标。然后模拟交换即可
小明有一排编号从 1 到 n 的格子,每个格子中放有一个编号球,球的编号正好是 1 到 n 的所有整数,每个数字恰好出现一次。初始时球的顺序是混乱的。每个格子都有一个状态:活跃或休眠。小明每次操作可以选择两个状态为活跃的格子,将它们里面的球互换。求最少需要多少次交换,才能让每个格子中球的编号与格子编号相同(即第 i 个格子中放编号为 i 的球)。若无论如何都无法达成目标,则判定为不可能。
约束:
Y 和 N,长度等于 n。第一行包含一个整数 n。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.