寻找两个数组的中位数
CSDN“每日一练”(Python )题目。
练习题目
我想先合并数组,再从合并数组中寻找中位数。但不知这样子搞是否满足“时间复杂度O(log(m + n)”的题目要求。(时间复杂度和空间复杂度,我去学了但还是懵懵的。)
代码运行效果
python完整代码
(如果从语句注释不能清楚作用,请评论区留言指教和探讨。🤝)
# coding: utf-8
'''寻找两个数组的中位数'''
a, b = [1, 4, 6, 7, 15], [4, 5, 7, 9, 11] #正序数组山赋值。
new_list = list(set(a+b)) #合并数组并用集合去重复元素。
new_list.sort() #正序排序。
n = len(new_list) #合并数组长度赋值。
if n % 2==1: #数组总元素数为奇取中间值,为偶取中间两个元素平均值。
mid = new_list[n // 2]
else:
mid = (new_list[n // 2] + new_list[n // 2 - 1])/2
blank = ' '
line = '﹊'*21
print(f'\n\n正序数组:{a},{b}\n{line}\n合并数组列表:\n{new_list}\n\n中位数:{mid:-^34f}\n\n{line}\n')
题目正解
我的博文推荐:
- 尼姆游戏(聪明版首发)(当前阅读3229)
- 尼姆游戏代码优化版(当前阅读814)
- 字符串统计(当前阅读1533)
- 求列表平衡点(当前阅读1692)
- 密码强度检测器(当前阅读1662)
- 电话拨号键盘的字母组合(当前阅读1204)
- 柱状图中最大矩形(当前阅读1434)
- 排序数组中查找元素的重复起止位置(当前阅读1171)
推荐条件
点阅破千
参考文章:
上一篇: 数列求和a, aa, aaa, …, aa…aa(n个a)
下一篇: 输出字符串的前10个不同字符
![老齐漫画头像](https://i-blog.csdnimg.cn/blog_migrate/8cbf2c45d8b57205b31ef4963b3b9854.jpeg)
精品文章:
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室