华为OD机试E卷 --喊7的次数重排--24年OD统一考试(Java & JS & Python & C & C++)

题目描述

喊7是一个传统的聚会游戏,N个人围成—圈,按顺时针从1到N编号。
编号为1的人从1开始喊数,下一个人喊的数字为上一个人的数字加1,但是当将要喊出来的数字是7的倍数或者数字本身含有7的话,不能把这个数字直接喊出来,而是要喊"过”。
假定玩这个游戏的N个人都没有失误地在正确的时机喊了"过”,当喊到数字K时,可以统计每个人喊’过”的次数。
现给定一个长度为N的数组,存储了打乱顺序的每个人喊过”的次数,请把它还原成正确的顺序,即数组的第i个元素存储编号i的人喊过“的次数。

输入描述

输入为一行,为空格分隔的喊"过"的次数,注意K并不提供,K不超过200,而数字的个数即为N。

输出描述

输出为—行,为顺序正确的喊"过"的次数,也由空格分隔。

用例

输入

0 1 0

输出

1 0 0

说明
—共只有一次喊”过”,那只会发生在需要喊7时,按顺序,编号为1的人会遇到7,故输出1 0 0。

输入

0 0 0 2 1

输出

0 2 0 1 0

说明
—共有三次喊”过”,发生在

### 华为OD E Python 准备资料和考试范围 #### 1. 考试概述 华为ODE主要考察编程能力和算法设计能力,通常涉及贪心算法、动态规划、图论等内容。对于Python开发者来说,熟悉这些算法并能熟练运用Python实现非常重要[^1]。 #### 2. 编程语言基础 掌握Python的基础语法是必不可少的,包括但不限于数据结构(列表、字典、集合)、控制流语句(if-else, for循环, while循环),以及函数定义与调用。此外,理解面向对象编程概念也十分必要。 #### 3. 数据结构与算法 重点复习常见的数据结构如数组、链表、栈队列及其操作;深入学习经典算法比如排序(快速排序、归并排序),查找(二分法), 动态规划等问题求解技巧。特别是针对本题提到的学生重新排队问题所使用的贪心策略应给予特别关注。 ```python def greedy_algorithm(arr): # 假设arr是一个整数列表表示学生的身高顺序 sorted_arr = sorted(arr) # 对学生按身高升序排列 result = [] while len(sorted_arr)>0: min_val = sorted_arr.pop(0) # 取最小值 max_val = None if len(sorted_arr)>0: max_val = sorted_arr.pop() # 如果还有剩余,则取最大值 result.append(min_val) if max_val is not None: result.append(max_val) return result ``` 此代码片段展示了如何通过贪心算法解决类似题目中的重排问题。 #### 4. 实战练习 多做历真题和其他在线平台上的模拟题来提高实战经验。可以访问LeetCode、牛客网等网站获取更多资源进行训练。同时也要注意时间管理,在规定时间内完成尽可能多的任务以适应实际考场环境的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值