华为 OD 机考 Python 【找朋友】

博客介绍了一道华为机考中的Python算法题,题目标签为'找朋友'。题目要求根据小朋友的身高生成一个列表,表示每个小朋友前面的第一个比自己高的小朋友的位置。解题思路使用单调递减栈,遍历过程中更新每个小朋友的大朋友位置。示例及代码给出详细解释。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目

在学校里,一群小朋友排成一排,每个小朋友都有自己的身高。每个小朋友都想知道自己前面第一个比自己高的小朋友是谁,这个小朋友就是他的“大朋友”。

现在,请写一个程序,根据每个小朋友的身高,生成一个列表。列表中每个位置代表每个小朋友的“大朋友”位置,如果没有找到“大朋友”,则用0表示。

输入描述:
第一行包含一个整数N,表示小朋友的数量。
第二行包含N个整数,表示每个小朋友的身高。

输出描述:
输出N个整数,表示每个小朋友的“大朋友”位置。

示例:
输入:
2
100 95
输出:
0 0

说明:
第一个小朋友的身高是100,站在队尾,没有比他身高更高的小朋友,因此输出第一个值为0。
第二个小朋友站在队首,也没有比他身高更高的小朋友,所以输出第二个值为0。

输入:
8
123 124 125 121 119 122 126 123
输出:
1 2 6 5 5 6 0 0

说明:
123的“大朋友”是1号位置上的124。
124的“大朋友”是2号位置上的125。
125的“大朋友”是6号位置上的126。

解题思路

可以采用单调递减栈的方法来解决这个问题。在遍历小朋友的身高时,我们维护一个单调递减的栈,如果当前小朋友的身高大于栈顶小朋友的身高,我们将栈顶小朋友出栈并记录其好朋友的位置。最后,栈中剩余的小朋友就是没有好朋友的小朋友,我们将其对应的结果位置置为0。

### 华为OD机考 Python相关内容及备考建议 #### 一、考内容概述 华为OD机考涉及的内容广泛,对于Python方向的考生来说,主要考察基础语法、数据结构与算法设计能力以及实际编程解决问题的能力。具体而言,考可能包括但不限于以下几个方面: - **基础知识**:变量定义、数据类型(如字符串、列表、字典)、控制流语句(if/else, for/while循环)等[^1]。 - **函数与模块**:掌握如何编写自定义函数,理解参数传递制;熟悉常用标准库及其功能应用[^2]。 - **面向对象编程(OOP)**:类的概念、继承关系、多态特性等内容可能会被提及到题目当中去测者的综合运用水平。 #### 二、备考资源推荐 为了有效应对上述各类知识点,在日常学习过程中可以参考以下几类优质教材或在线课程作为辅助工具来提升个人实力: - 阅读官方文档或者权威书籍《流畅的Python》(Fluent Python),深入理解语言特性和最佳实践方法; - 利用LeetCode平台上的专项训练板块针对特定领域加强练习强度,比如数组操作、链表管理等问题类型都是高频考点之一; - 参加模拟笔环节以适应真实考场环境下的压力状况并及时调整状态至最佳水准。 #### 三、实战技巧分享 除了扎实的基础理论之外,还需要注意一些临场发挥的小窍门才能取得理想成绩: ```python def example_function(input_list): result = [] for item in input_list: processed_item = process(item) # 假设有一个处理逻辑 if condition(processed_item): # 条件判断 result.append(processed_item) return result ``` 以上是一个简单的例子展示了清晰可读性强且易于维护扩展的良好编码习惯的重要性——合理命名变量名使得意图更加明显直观;适当添加注释解释复杂部分有助于他人快速读懂代码含义。 另外还需强调时间分配合理性问题,在有限时间内完成高质量解答至关重要因此平时就要养成良好节奏感通过不断尝找到最适合自己的答题顺序与速度平衡点。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codereasy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值