![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每日编程题
菜鸡小吴需要努力
这个作者很懒,什么都没留下…
展开
-
每日编程题 12
所有题目均采用python进行完成 快速指数 求解 an a^n an 程序采用递归的思路,考虑了部分边界问题 def fast_power(a, n): if n == 0: return 1 elif n < 0: return 1 / fast_power(a, -n) elif n % 2: return fast_power(a*a, n//2) * a else: return fast_po原创 2021-02-10 09:23:15 · 146 阅读 · 1 评论 -
每日编程题 11
题目均采用python进行完成 供暖设备 已知供暖设备和房屋的位置,给出供暖设备的最小半径 注意:供暖设备需要排序 可以使用python中的bisect找到需要插入的索引值 from bisect import bisect def find_radius(house, heater): # 供暖设备排序 heater.sort() radius = 0 # 每个房子寻找最小的供暖距离 for h in house: index_h =原创 2021-02-09 14:37:24 · 316 阅读 · 0 评论 -
每日编程题 10
所有题目均采用python进行完成 二分搜索 二分搜索的简单模板 def binary_search(num, target): # 判断是否为空 if len(num) == 0: return -1 left = 0 right = len(num) - 1 while left + 1 < right: mid = (left + right) // 2 if num[mid] == target:原创 2021-02-08 09:06:36 · 200 阅读 · 0 评论 -
每日编程题 09
题目均采用python进行完成 希尔排序 进化版本的插入排序 def shell_sort(num): length = len(num) group = len(num) while group > 0: for i in range(group, length): for j in range(i, group - 1, -group): if num[j - group] > num[j]: num[j], num[j - group] = num[j -原创 2021-02-07 12:14:54 · 172 阅读 · 0 评论 -
每日编程题 07
题目还是采用python进行解答 汉诺塔 关键:递归问题,简单两个点 操作步骤 f(n) = 2^n - 1 找出第一步和第n步,验证n+1步 def tower(n, start, end, by): if n == 0: print('move' start 'to' end) else: tower(n-1, start, by, end) tower(1, start, end, by) tower(n-1, by, end, start) ...原创 2021-02-04 11:37:20 · 113 阅读 · 0 评论 -
每日编程题 05
所有题目都采用python进行解答,希望可以一起交流!! 寻找消失的数字 给定一个整数数组, 其中每个元素[1, n],数组中的数字出现1次或两次,试写一个函数找到没有出现的数字。尽量使用更少的空间和时间。 例如: 输入[4,3,2,7,8,2,3,1] 输出[5,6] 有两种方法,最简单就是循环判断,但是时间复杂度高 !!! in这个是O(n)的时间复杂度,程序如下 def find_num(num): # 时间复杂度 O(n^2) num_list = [] for i in range(1原创 2021-02-02 20:24:05 · 247 阅读 · 0 评论 -
每日编程题 03
所有题目实现都是采用python 矩阵中的“0” 在一个M行N列的矩阵中,如果查找到一个元素为“0”,将其所在的行和列的元素都设为“0”. 需要考虑一个记录矩阵,一般都会考虑M行N列的,但是可以行列分开考虑,这样会减少空间复杂度,只需要(M+N). 幻方 从命令行读取一个奇数N,打印出N行N列的幻方,幻方包含1到N2N^2N2的所有数字,每个数字只用一次。幻方的各个行之和和各个列之和以及对角线之和都相等。 有规律可以自己搜索了解,首先是确定数字1的位置,在最后一行的中间,2在后一行后一列,若当前位置有数,则原创 2021-01-31 10:38:39 · 239 阅读 · 2 评论 -
每日编程题 02
今天的题目也是采用python进行实现,需要两个包 ctype 和 random 1.自建一个列表 创建一个空列表 – 判断列表是否为空 – 列表的长度和容量 – append,insert,remove功能实现 首先对于append/insert来说,需要注意几个点: 插入位置是否超过列表的长度,若已经超过的话,需要重新建立一个更大的列表,再append。 insert需要倒着写,才会保证数不会被覆盖。 (可以画图理解) remove需要正着写,同样保证数不会被覆盖。 为了验证函数功能,可以在类定义一个原创 2021-01-30 09:59:47 · 87 阅读 · 1 评论 -
每日编程题 01
三道编程题 每道题目均采用python进行编程实现 洗牌问题 计算质数 哥德巴赫猜想原创 2021-01-29 10:31:48 · 114 阅读 · 0 评论