AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2476. 高矮个子排队

简单通过率 38% · 提交 165 · 通过 62
模拟贪心

小慕正在组织一场班级活动,需要给一队小朋友排队。这些小朋友身高各不相同,小慕希望队伍按照“高”“矮”“高”“矮”的顺序交替排列。我们用正整数数组表示这队小朋友的身高,例如数组{5, 3, 1, 2, 3}。 在排列中,每个“高”位置上的小朋友要比相邻的小朋友高或者相等;每个“矮”位置上的小朋友要比相邻的小朋友矮或者相等。小慕希望小朋友们移动的总距离尽可能小,队伍从第一个位置开始就是“高”位。请输出最小的。 例如,对于队伍{5, 3, 1, 2, 3},排列{5, 1, 3, 2, 3}是一个可行的结果。而{5, 2, 3, 1, 3}虽然也满足“高”“矮”“高”“矮”的顺序,但小朋友们的移动距离更大,因此不是最优解。 移动距离的定义如下:如果某位小朋友从第i位移动到第j位,移动距离为|i - j|。例如,第二位小朋友移到第三位小朋友后面,移动距离为1;若移动到第四位小朋友后面,移动距离为2。

提示:带虚线的词点一下有通俗解释。

输入描述

排序前的小朋友,以英文空格的正整数:4 3 5 7 8 注:小朋友<100个

输出描述

排序后的小朋友,以英文空格分割的正整数:4 3 7 5 8 备注: 4 (高) 3 (矮) 7 (高) 5 (矮) 8 (高) ,输出结果为最小移动距离,只有5和7交换了位置,移动距离都是1。

示例

示例 1

输入

1 1 1 1 1

输出

1 1 1 1 1

说明:相邻位置可以相等

示例 2

输入

xxx

输出

[]

说明:出现非法参数情况,返回空数组

示例 3

输入

4 1 3 5 2

输出

4 1 5 2 3

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
双机位A/C-高矮个子排队 样例图解 原始队列: 5 3 1 2 3 结果队列: 5 1 3 2 3 移动:1和3交换位置,移动距离各为1,总距离2
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「高矮个子排队」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。