
算法学习
GiveMeFive_Y
这个作者很懒,什么都没留下…
展开
-
python算法习题(三): 链表反置
class Node(): def __init__(self, data): self.data = data self.next = None构造链表:def makeLinkList(num): head = None for i in range(num): tmp = Node(i) if...原创 2018-03-29 17:45:18 · 378 阅读 · 0 评论 -
python算法习题(八):单词接龙 II
1. 题目给出两个单词(start和end)和一个字典,找出所有从start到end的最短转换序列 比如: 每次只能改变一个字母。 变换过程中的中间单词必须在字典中出现。 注意事项 所有单词具有相同的长度。 所有单词都只包含小写字母。样例 给出数据如下: start = “hit” end = “cog” dict = [“hot”,”dot”,”dog”...原创 2018-04-13 10:18:25 · 1995 阅读 · 0 评论 -
python算法习题(二): 递归算法
列举两个经典应用:1. 斐波那契数列递归算法实现def fib1(N): if N == 1: return 1 elif N == 2: return 1 else: return fib1(N-1) + fib1(N-2)不用递归实现:def fib2(N): a = 1 ...原创 2018-03-29 17:15:33 · 1967 阅读 · 0 评论 -
python算法习题(一): 排列组合
排列组合的常见算法应该是枚举,但是对于长度较长的集合并不适用。网上也有用递归实现的方式,暂时不做介绍。这里想法是位置交换。def permutation(inpt): length = len(inpt) tmp = inpt.copy() while True: for i in range(0, length-1): tm...原创 2018-03-29 17:05:52 · 2074 阅读 · 0 评论 -
python算法习题(四): 添加运算符
1. 题目给定一个仅包含数字 0 - 9 的字符串和一个目标值,返回在数字之间添加了 二元 运算符(不是一元)+, - 或 * 之后所有能得到目标值的情况。 样例: “123”, 6 -> [“1+2+3”, “1*2*3”] “232”, 8 -> [“2*3+2”, “2+3*2”] “105”, 5 -> [“1*0+5”,”10-5”] “00”, 0 -...原创 2018-04-04 17:33:20 · 1558 阅读 · 0 评论 -
python算法习题(十):木材加工
1. 题目有一些原木,现在想把这些木头切割成一些长度相同的小段木头,需要得到的小段的数目至少为 k。当然,我们希望得到的小段越长越好,你需要计算能够得到的小段木头的最大长度。 注意事项 木头长度的单位是厘米。原木的长度都是正整数,我们要求切割得到的小段木头的长度也要求是整数。无法切出要求至少 k 段的,则返回 0 即可。样例: 有3根木头[232, 124, 456], ...原创 2018-04-16 15:24:57 · 3204 阅读 · 1 评论 -
python算法习题(七):大楼轮廓
1. 题目水平面上有 N 座大楼,每座大楼都是矩阵的形状,可以用一个三元组表示 (start, end, height),分别代表其在x轴上的起点,终点和高度。大楼之间从远处看可能会重叠,求出 N 座大楼的外轮廓线。外轮廓线的表示方法为若干三元组,每个三元组包含三个数字 (start, end, height),代表这段轮廓的起始位置,终止位置和高度。 注意事项: 请注意合并同样高...原创 2018-04-10 10:00:10 · 999 阅读 · 0 评论 -
python算法习题(六):LFU缓存
1. 题目LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。 实现LFU中的set 和 get。 样例 capacity = 3set(2,2) set(1,1) get(2) => 2 get(1) => 1 get(2) => 2 set(...原创 2018-04-09 15:17:33 · 1207 阅读 · 0 评论 -
python算法习题(五):单词拆分
1. 题目给一字串s和单词的字典dict,在字串中增加空格来构建一个句子,并且所有单词都来自字典。 返回所有有可能的句子。 样例: 给一字串lintcode,字典为[“de”, “ding”, “co”, “code”, “lint”] 则结果为[“lint code”, “lint co de”]。2. 思路a. 使用排列组合算法得出所有拆分情况,再判断每一项是否在给定字典里...原创 2018-04-09 10:25:51 · 3499 阅读 · 0 评论 -
python算法习题(九):最小危险值路径
1. 题目地图上有 m 条无向边,每条边 (x, y, w) 表示位置 x 到位置 y 的权值为 w。从位置 0 到 位置 n 可能有多条路径。我们定义一条路径的危险值为这条路径中所有的边的最大权值。 请问从位置 0 到 位置 n 所有路径中最小的危险值为多少? 注意事项 1 <= m <= 500,1 <= n <= 50,0 <= x, y...原创 2018-04-13 10:47:53 · 2068 阅读 · 0 评论