Algorithms
1 | class Solution { |
Ugly Number II
思路: 首先1到N的丑数为 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, …, 那么根据题中第二个隐藏的提示:
1 | (1) 1×2, 2×2, 3×2, 4×2, 5×2, ... |
每次选取三个列表中最小的那个加入序列即可。
1 | class Solution { |
Review
本周阅读英文文章
1、Cyber Hackers Salivating at AI Driverless Cars Advent, Safeguards Please
3、How to solve the Knapsack Problem with dynamic programming
Technique
在看《Python高性能(第2版)》时,看到一些优化操作,比如使用推导式来替代显式的for循环。
1 | import timeit |
1 | def loop(): |
1 | %timeit loop() |
还可结合使用迭代器和filter、map等函数实现高效的循环。
1 | def map_comprehension(numbers): |
这种方法对于每个列表推导都将分配一个新列表,增加了内存使用量,使用map来重写前面的函数,这将创建中间生成器,动态地计算值以节省内存。
1 | def map_normal(numbers): |
安装memory_profiler后,使用memit来评估内存的使用情况
1 | pip install memory_profiler |
1 | %load_ext memory_profiler |
Share
使用pbzip2进行更快的压缩,它会自动检测系统中处理器核心的数量或使用-p
选项手动指定处理器核心的数量,在内部使用的压缩算法和bzip2一样,但是它会利用pthreads来同时压缩多个数据块。
安装:
1 | sudo apt install pbzip2 |
压缩一个文件:
1 | ls |
pbzip2并不会创建归档文件,只能对单个文件进行操作,要压缩并归档多个文件或目录,需要使用tar配合pbzip2来实现:
1 | ls |
可以利用管道从pbzip2格式的文件完成解压缩和提取:
1 | ls |