#107. 数组重排:4后跟5

数组重排:4后跟5

数组4-5重排

题目背景

在一次数据整理任务中,你需要对一个特殊的数字序列进行重新排列。这个序列中的数字需要满足一个特定的模式,以确保数据的正确性和可用性。

题目描述

(这是 fix34 问题的稍难版本。)给定一个数组,返回一个包含与给定数组完全相同数字的数组,但经过重新排列,使得每个 44 后面都紧跟着一个 55。不要移动 44 的位置,但其他所有数字都可以移动。数组中 44 和 55 的数量相同,并且每个 44 后面都有一个不是 44 的数字。在此版本中,55 可以出现在原始数组的任何位置。

输入格式

输入以如下格式从标准输入中给出。

一个整数数组,表示原始序列。

输出格式

输出以如下格式输出到标准输出中。

一个整数数组,表示重新排列后的序列。

样例

[5 4 9 4 9 5]
[9, 4, 5, 4, 5, 9]
[1 4 1 5]
[1, 4, 5, 1]
[1 4 1 5 5 4 1]
[1, 4, 5, 1, 1, 4, 5]

样例解释

对于样例1:原始数组为 [5, 4, 9, 4, 9, 5]。其中 44 位于索引 11 和 33。我们需要将 55 放置在 44 之后。原始数组中,索引 00 和 55 处的 55 是“自由”的(即它们前面没有 44)。索引 22 和 44 处的 99 需要被移动,以便为 55 腾出位置。最终,索引 00 处的 55 被移动到索引 22 处,索引 55 处的 55 被移动到索引 44 处。原来索引 22 和 44 处的 99 则分别被移动到索引 00 和 55 处,得到 [9, 4, 5, 4, 5, 9]。

数据范围

每个测试用例的时间限制为 11 秒,内存限制为 10241024 KiB。