hr与lc的对比

来源:互联网 发布:网络语香菇是什么意思 编辑:程序博客网 时间:2024/05/16 06:28

hackerrank:

优点:
1. 题目较多 分类明确 每道题都有难度分
2. 从main函数开始写
3. 有contest,一般是2h五道题,或者1h 两三道题 比较适合笔试风格
4. 错误点不给出用例,要用分数买,分数通过参加比赛和AC练习题获得
5. 除算法题外还有别的类型的练习题
缺点:
1. 因为是阿三的网站 出题人都是阿三 有时候里面的English表达有点奇怪
2. 传统acm风格 只顾及AC 不考虑算法优化
3. 卡
4. 题目难度分不准,有的15分的题比100分的还难
5. 除了官方题解和discuss外 基本搜不到题解
适合: 编程初学者练手,求职机试,考研复试,ACMer训练都可以。

lc:
优点:
1. 前面题非常简单,易上手,对新手来说增强信心
2. 题目经典 例如最长公共子序列 回文数等 都是必背必会的题
3. 错误点给出用例 方便debug(同时也是缺点)
4. 每道题都有用时的分布直方图 方便知道你的算法是否较快
5. 题解巨多 几乎每个程序员都刷过(我也有一部分的题解)

缺点:
1. 错误点直接给出用例 不便于水平进一步提升
如果我哪天做一道题做不出来,恼羞成怒了,我直接if( xxx ) return xxx; else if(xxx) return xxx;这样写,啥题我都能做出来。。。。。。
2. 没有main函数 考验不了优化输入输出和自己设计数据结构装下输入信息的能力

举个例子吧。比如最简单的一道题:
输入n个数,求这n个数的和
例如输入:

1 2 3 4 5 6

输出21

如果在lc里不写main函数而只写接口 那么接口只能写成大概这样:
ll getSum(vector<int> nums>

而如果写main函数的话,其实声明两个变量就可以了,根本就不需要vector:

int n;ll sum=0;while(~scanf("%d",&n))    sum+=n;printf("%I64d\n",sum);

这方面的优化,是LC永远体现不出来的。
3. 数据太弱,很多题用土办法就能AC,不卡复杂度。(lc是基于面试的,既然面试官想考察你会不会nlogn的算法,那么个人认为,你写个O(n2)的土办法就应该直接判tle)

0 0
原创粉丝点击