华为od机考 Python 【中位数】

寻找数组中与中位数最接近的差值
这是一篇关于华为OD机考中的一道Python编程题,题目要求找出数组中使得子数组之差与中位数最接近的起始位置。数组长度在2到1000之间,元素为正整数,K的值小于数组大小。通过计算每个子数组的差值并与中位数比较,找到最接近的差值对应的起始位置。

题目

假设你有一个正整数数组X和一个整数K。请计算下式的结果:

X[i] - X[i + 1] - … - X[i + K - 1]

你的目标是找到使这个结果与数组的中位数最为接近的i值。如果有多个相同的结果,请返回最大的i。

额外信息:

数组的中位数是什么?当你把数组从小到大排序后,中间那个数字就是中位数。
你可以假设数组X里的元素都是正整数。
数组X的长度n限制为:2 ≤ n ≤ 1000。
K的值肯定小于数组的大小。
i的范围是:0 ≤ i < 1000。
例子:
输入: [50,50,2,3], 2
输出: 1

为什么?首先,这个数组排序后为[2,3,50,50],中位数是50。接着,我们按照上面的公式计算,找到差值与50最接近的是X[1] - X[2],所以返回1。

代码

def closest_subarray_to_median(nums, k):
    mid 
### 华为OD机考 Python 试题解析 #### 题目一:计算销售团队中每位成员的总收入 题目描述如下: 在一个公司里,每个销售人员都有自己的直接上级。公司的老板(Boss)没有直接上级,其上级ID设为0。每个销售人员有一个唯一的ID以及对应的销售额。现在需要编写一个程序来计算每一位员工及其下属的所有销售收入总和。 输入数据结构: - 第一行是一个整数`N`,表示销售团队中的销售员数量。 - 接下来的`N`行,每行有三个数字,分别代表:销售员的ID、该销售员的直接上级的ID、销售员的销售额。 输出应返回一个字典形式的结果,键为各个销售员的ID,值为其个人加上所有下级人员的累计销售额。 解决方案可以通过构建树形结构来进行求解[^3]。 ```python from collections import defaultdict, deque def calculate_total_sales(n, sales_data): # 构建图关系表 hierarchy = defaultdict(list) sales_amounts = {} for employee_id, manager_id, amount in sales_data: hierarchy[manager_id].append(employee_id) sales_amounts[employee_id] = int(amount) result = {} def dfs(node): total = sales_amounts[node] for subordinate in hierarchy[node]: total += dfs(subordinate) result[node] = total return total root_node = next((id for id, _, _ in sales_data if _ == '0'), None) if root_node is not None: dfs(int(root_node)) return result ``` 此段代码实现了对给定的数据集进行处理并按照要求输出结果的功能。通过深度优先遍历算法(DFS),可以有效地统计每一个节点下的全部子节点所贡献的价值之和。 #### 示例测试用例 假设存在以下输入数据: ```plaintext 7 1 0 200 2 1 150 3 1 75 4 2 50 5 2 90 6 3 120 7 3 80 ``` 调用上述定义的方法将会得到这样的输出: ```python {1: 765, 2: 315, 3: 375, 4: 50, 5: 90, 6: 120, 7: 80} ``` 这表明顶级管理者(ID=1)拥有最高的累积销售额,而其他较低级别的管理人员则只包含了他们自己及直属下线的表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AlgorithmHero

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

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

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

打赏作者

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

抵扣说明:

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

余额充值