---
layout: post
title:  "从头学算法（二、搞算法你必须知道的OJ）"
date:   2016-12-20 11:36:52
categories: 数据结构及算法
tags: OJ algorithms
mathjax: true
---

在没接触算法之前，我从没听说过OJ这个缩写，没关系，现在开始认识还来得及。等你真正开始研究算法，你才发现你又进入了一个新的世界。
这个世界，你不关注它的时候，它好像并不存在，而一旦你关注它了，每一个花草都让你叹为观止。
来看看百度百科是怎么说的吧：

    OJ是Online Judge系统的简称，用来在线检测程序源代码的正确性。著名的OJ有TYVJ、RQNOJ、URAL等。国内著名的题库有北京大学题库、浙江大学题库、电子科技大学题库、杭州电子科技大学等。国外的题库包括乌拉尔大学、瓦拉杜利德大学题库等。
    




而作为程序员，你必须知道Leetcode这个OJ，相比起国内各大著名高校的OJ，为什么我更推荐程序员们选择LeetCode OJ呢？原因有两点：

第一，大学OJ上的题目一般都是为ACM选手做准备的，难度大，属于竞技范畴；LeetCode的题相对简单，更为实用，更适合以后从事开发等岗位的程序员们。

第二，LeetCode非常流行，用户的量级几乎要比其他OJ高出将近三到五个级别。大量的活跃用户，将会为我们提供数不清的经验交流和可供参考的GitHub源代码。

刷LeetCode不是为了学会某些牛逼的算法，也不是为了突破某道难题而可能获得的智趣上的快感。学习和练习正确的思考方法，锻炼考虑各种条件的能力，在代码实现前就已经尽可能避免大多数常见错误带来的bug，养成简洁代码的审美习惯。
通过OJ刷题，配合算法的相关书籍进行理解，对算法的学习是很有帮助的，作为一个程序员，不刷几道LeetCode，真的说不过去。

最后LeetCode网址：https://leetcode.com/
接下来注册开始搞吧！
![image_1bf90k08d19p01391i8pfvkqhbm.png-65.6kB][1]
![image_1bf90orko1ccn1opj29j93cc7f13.png-91.4kB][2]

LeetCode刷过一阵子之后，发现很多都是收费的，这就很不友好了。本着方便大家的原则，向大家推荐lintcode，题目相对也很全，支持中、英双语，最重要是免费。


  [1]: http://static.zybuluo.com/coldxiangyu/j2xlu88omsuprk7c7qinubug/image_1bf90k08d19p01391i8pfvkqhbm.png
  [2]: http://static.zybuluo.com/coldxiangyu/fztippzc74u7j9ww7av2vvn3/image_1bf90orko1ccn1opj29j93cc7f13.png
