本题说明:

这题目说明其实是有很大问题的,题目描述的其实是从头到位每个小朋友来和后一个比较高矮,来源是它给的样例1,[4 1 3 5 2],如果是移动步数最小,那么答案应该是[4 1 3 2 5],也就移动一步,而样例答案是[4 1 5 2 3],那么根据结果推测结果是到3跟5比较,3的index应该是高,所以5、3互换,然后2、3互换得出结果。

所以之前解题思路的错误想法反而是复杂的正确的,正确想法也是画蛇添足的方案,也不用那么复杂,你直接从前往后循环,和后面的元素比较,高的就放高的,矮的就放矮的即可。

如果题目的描述换成,再高矮的同时,要求移动步数最小,那么做法就是将数组作为一个二叉树的中序遍历的结果,然后高矮的要求,其实就变成了最小堆。根据结果推到出树结果,然后将它编程最小堆,然后再中序遍历输出结果即可。

所以在做机试时,真正难点在有限样例和不清不楚的描述下,如果能恰好符合条件才是关键。

所以给的都是参考,重点是解题想法,而不是代码,因为理解偏差和有限样例,没办法保证机试一定是对的,别为了考试而考试,还是看看数据结构和算法的好。

题目描述:

现在有一队小朋友,他们高矮不同,,我们以正整数数组表示这一队小朋友的身高,如数组{5,3,1,2,3}。
我们现在希望小朋友排队,以“高”“矮”“高”“矮”顺序排列,每一个“高”位置的小朋友要比相邻的位置高或者相等;每一个“矮”位置的小朋友要比相邻的位置矮或者相等;要求小朋友们移动的距离和最小,第一个从“高”位开始排,输出最小移动距离即可。
移动距离的定义如下所示:第二位小朋友移到第三位小朋友后面,移动距离为1,若移动到第四位小朋友后面,移动距离为2。


输入描述:

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


输出描述:

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


示例:

1.输入:

4 1 3 5 2
输出:4 1 5 2 3
2.输入:

1 1 1 1 1
输出:1 1 1 1 1
说明:

相邻位置可以相等
3.输入:

xxx
输出:[]
说明:

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

#解题想法:
错误想法:一开始想法,list前后添加一个0,从位置1依次往后循环,由于list前面增加了个0,所以i%2==1的位置是高值位,如果它不是包括它在内的前后三个元素最大值,那么就将它和i+1位置对换
(此处原因是身高>0,所以从位置1开始,如果存在比它大的值,肯定在他后面位置,
因为前面一个数已经通过最小值判断了),
i%2==0的位置是低值位,如果它不是包括它在内的前后三个元素最小值,那么就将它和i+1位置对换。
但这个想法不符合最小移动步数,测试用例10 8 6 9 9,最佳结果是一步--10 8 9 6 9,
而不是两步--10 6 9 8 9正确想法:通过整体观察,list前e个最大值最终结果肯定都在高值位,那么就通过深度复制生成新的
list排序,依次找高位置的数字在不在新的list,不在的话,肯定就在低位置,那么调换他们就可以了#测试用例#4,3,5,7,8#4 1 3 5 2#10 8 6 9 9#1 1 1 1 1#10 8 6 9 9#xxxwhile 1:try:s=input()l=list(map(int,s.split(" ")))print(l)ll=l.copy()ll.sort(reverse=True)print(ll)if len(ll)%2==0:e=int(len(ll)/2)else:e=int(len(ll)/2)+1print(e)for i in range(0,len(l),2):if l[i] not in ll[0:e]:for j in range(1,len(l),2):if l[j] in ll[0:e]:tmp = l[i]l[i] = l[j]l[j] = tmpbreakprint(" ".join(map(str, l)))breakexcept Exception as e:print("[]")break

华为OD机试题:小朋友高矮排列相关推荐

  1. 华为OD机试题 - 最大排列(JavaScript)| 代码,编码思路,解题知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  2. 华为od机试题9 真题

    华为od机试题 真题 9.寻找重复字符 7.字符串翻转 6.小朋友身高排序 5.CPU最少执行时间 4.猴子爬山 3.输出信元的值 2.指定元素对最小和 1.勾股数元组 以下题目附带Java解法,是我 ...

  3. 华为od机试题2 真题

    华为od机试题 真题 77.满足最大消费额度 76.小朋友身高位置 75.字符连续出现最大次数 74.最少停车数 73.字母多条件排序 71. 交叉排序 70.水仙花数 69.消除相邻且相同字母 以下 ...

  4. 华为od机试题1 真题

    华为od机试题 真题 86.射击比赛成绩排序 85.计算屏幕字母数量 84.组成最大数字 82.输出字符串中最小数字 81.数字4的个数 80.整数排列 79.多条件排列 78.时间排序 以下题目附带 ...

  5. 华为od机试题6 真题

    华为od机试题 真题 35.输出满足条件的数对 34.寻找众数中的中位数 33.分配内存 32.窗口和的最大值 31.求整数的连续自然数之和的表达式 30.矩阵的最大值 以下题目附带Java解法,是我 ...

  6. 华为OD机试题 - 数据分类(JavaScript)| 代码+思路+重要知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  7. 华为OD机试题 - 找出重复代码(JavaScript)| 包含代码编写思路

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  8. 华为OD机试题 - 剩余可用字符集(JavaScript)| 含思路

    华为OD机试题 最近更新的博客 使用说明 本篇题解:剩余可用字符集 题目 输入 输出 示例一 输入 输出 说明 Code 解题思路 华为OD其它语言版本 最近更新的博客 华为od 2023 | 什么是 ...

  9. 华为OD机试题 - 优选核酸检测点(JavaScript)| 代码+思路+重要知识点

    最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - ...

  10. 华为od机试题4 真题

    华为od机试题 真题 58.处理所有作业总时长 53.最大停车距离 52.磁盘容量排序 51.非严格递增连续数字序列长度 50.均分糖果 48.没有相同字符的元素长度乘积的最大值 47. 相对开音节结 ...

最新文章

  1. c++ 使用对象指针
  2. 多线程:线程之间的协作(join、wait、notify、notifyAll、await、signal、signalAll)
  3. java jdkxp32_java运行环境(jre-8u65-windows-i586) 官方安装版 32位
  4. I2C总线以及GPIO模拟I2C
  5. Boost:bind绑定状态的测试程序
  6. 百度分享--分享按钮的实现
  7. MySQL调优(一):使用profiles、performance_schema性能监控
  8. Leet Code OJ 258. Add Digits [Difficulty: Easy]
  9. Vue.js 运行机制全局概览浅读
  10. mysql常用客户端工具
  11. html不存在模板,模板文件不存在,无法解析文档的解决方法
  12. markdown基础语法
  13. 对行场、带宽很好解析的一文章
  14. 第三类边界条件 matlab,matlab怎么解偏微分方程
  15. 解决win10测试麦克风显示有声音,但是实际使用teams还有其他录音设备时没有声音
  16. 基于公共知识和一次学习的多任务流量分类
  17. 3.【Python编程】字典Dict相关知识及基本操作
  18. 大学生如何修好进水的电脑
  19. 优思学院|六西格玛管理如何在物流行业中应用?
  20. vue页面内嵌iframe使用postMessage进行跨域通信

热门文章

  1. Java实现k个数乘(cheng)(自然数的k乘积问题)
  2. 与兄弟连的不期而遇似早已缘定——是什么促使我来兄弟连
  3. 高中计算机会考教案,浙江省高中信息技术会考复习纲要教案
  4. 星历表、历书、GPS三种启动方式
  5. Scipy 之eye方法介绍
  6. VScode怎么开启本地服务器及本地调试?
  7. RealPlayer 安装
  8. MobaXterm(终端工具)下载安装
  9. stm32--以太网方案
  10. 图解 Transformer