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

数组重排:4后跟5

数组4-5重排

题目背景

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

题目描述

(这是 fix34 问题的稍难版本。)给定一个数组,返回一个包含与给定数组完全相同数字的数组,但经过重新排列,使得每个 44 后面都紧跟着一个 55。不要移动 44 的位置,但其他所有数字都可以移动。数组中 4455 的数量相同,并且每个 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 位于索引 1133。我们需要将 55 放置在 44 之后。原始数组中,索引 0055 处的 55 是“自由”的(即它们前面没有 44)。索引 2244 处的 99 需要被移动,以便为 55 腾出位置。最终,索引 00 处的 55 被移动到索引 22 处,索引 55 处的 55 被移动到索引 44 处。原来索引 2244 处的 99 则分别被移动到索引 0055 处,得到 [9, 4, 5, 4, 5, 9]

数据范围

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