python刷oj的意义:
-
不要认为只有ACMer刷oj才是有意义的 如果你不打算投身ACM,那么用刷oj来提升自己的编程水平是很棒的选择!
无论是从程序设计的思想,还是对语言本身特性的熟悉程度,都会极大地提高 -
若果你热爱Python,请坚持下去。我之前总是认为自己对python的基础还是特性都很了解
直到我刷oj,真的让我自己学到了很多东西,每次刷oj都让我对python有一个新的认识,更多一分对他的狂热。
在刚学完python基础的那段时间,我总是会为自己能写出一个能成功运行的程序而开心,从来没有想过去考虑一个程序的性能
在接触oj之后,我感到自己的编程思想境界得到极大提升语句之间的逻辑到底怎样才是最高效的?
字典,列表,集合…各种的数据结构,到底哪一种才是最合适内存利用率最高的?
复制一个列表,是用列表推导式,还是deepcopy
添加元素,是用append,还是extend,还是insert
各种函数底层到底是如何实现的,效率又有何不同呢…
我竟然开始雕琢每一个语句,效率是否是最高,是最合理的选择吗,又或者能否写的更简洁
每一个变量,是否会消耗过多内存,有必要吗,会不会花费过长的时间拖慢程序
…也真是应了python的特点:入门简单,精通难
过去只考虑能得到结果,根本不在乎别的,就好像做数学题不在乎过程一样。
而现在我开始真正的理解:语言只是皮囊,算法才是灵魂 -
可能很多人并没有对算法有深入的学习,但是你要时刻明确你自己的目的。
所以你不必要去做很难对算法要求很高的题,你可以做一些简单或中等难度的题
并尽可能尝试用python本身的特性去实现,利用那些其他语言中没有的强大性能。 -
不得不承认,python的速度真的比不过c++/c,在专业的算法比赛中,又不能调用过多的现成库,所以在专业比赛和高难度题上,确实力不从心。
但是请你一定要有一个自信:只要是你脑子里能想出来的东西,就能用Python写出来。
全世界有数百万开发人员,每天都不断地在强化扩大python的各种库
正所谓:人生苦短,我用python
下面放一些python刷oj的代码的仓库(真的好难找。。):
UVa:
https://github.com/secnot/uva-onlinejudge-solutions
https://github.com/jlhung/UVA-Python
https://github.com/rezwanh001/UVA-Solutions-in-Python
LeetCode:
https://github.com/Tongzhenguo/Python-Project/tree/master/OJ
https://github.com/bbruceyuan/algorithms-and-oj/tree/master/leetcode-algorithms
华为OJ: