传统OJ的特点
传统OJ给你题目,其他事都需要你自己从0到1来完成,自己写main函数,并且按照一定格式从标准输入给数据,自己可以随便接到其他数据结构里面,然后让你从标准输出给结果,一般是printf或cout到控制台,代码编译后通过一个专门的检查程序检查输出查看是否正确。
leetcode的特点
leetcode和其他OJ不一样,不需要你自己写main函数,
它提供一个叫做Solution的类,类中有一个函数,返回值和参数都给你写好了,参数对应传统OJ的标准输入,返回值对应结果的输出。我们的工作主要就是填充函数里的内容,也就是一道题目最核心的部分——关键算法。
也就是说,我们不需要从头到尾关注问题的整个解决过程,它给你一些数据(函数参数),然后你按照它的题目要求处理这些数据,然后以数据的格式返回就行。
这种方式相当于造了一个轮子,可以嵌入各种工程代码中成为部件复用,
而其他OJ写了一个main函数,就像一个算法单独成了一辆车,可以自己跑,但不能成为其他工程的部件,
因此leetcode更接近工作中的场景,企业面试很多都从leetcode上出题。
这里可以参考以下剑指offer,程序员面试指南
提一下我的建议
不过leetcode和其他OJ都是一个学习、考验算法能力的一个平台而已,只是使用方式和侧重点不同,没有什么反不反人类的,只是熟不熟悉的问题。
大部分小白刚接触算法时都是一些简单的问题,使用main函数可以轻松解决,可以自由发挥,也有利于自己在IDE中调试。
leecode更像是模拟了一个工作环境,企业给你一个任务,其他的事不需要你管,只需要你按照代码规范返回结果就行。虽然难调试了一点,但它更专注问题本身。
对于不同的刷题平台,不要忘了我们的目的是学习算法。因此我是建议新人从传统OJ开始学习算法,使用main
函数写代码,方便调试,自己的想象空间还不会有所限制。等你对算法熟悉后,有了一定的码力,就可以尝试在leetcode学习,了解一下企业面试题目。
学习算法,刷题很重要。
算法是程序员的重中之重,必须攻克,大厂面试必考,顺便送一份c++版leetcode刷题笔记和阿里大佬刷Leetcode总结的算法笔记,每道题均附有详细题解过程,跟着大佬的路线走肯定不会吃亏。
如果你能吃透,那我相信80%的技术面试都会不在话下: