楼主: 025ebaacad
跳转到指定楼层
上一主题 下一主题
收起左侧

[Leetcode] This is a personal record of 刷题 Leetcode: hard only

🔗
 楼主| 025ebaacad 2020-5-9 18:09:31 | 只看该作者
全局:
本帖最后由 025ebaacad 于 2020-5-9 18:39 编辑

我不是leetcode的付费用户,所以不能用它的Debug功能、调试的时候只能用print在console输出变量来排查;另外,很多IDE有自动补全和错误语法提示的功能。这些功能如果能用的话,解题会更快一些。


由此,我觉得我可以去了解一下面试的时候是什么软件、网站,有没有这些功能。
回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-9 19:49:41 | 只看该作者
全局:
本帖最后由 025ebaacad 于 2020-5-9 19:53 编辑

57 Insert Interval

看了题,简朴一点的算法很直观(遍历,找到开始插入的点,找到结束插入的点,然后删掉需要删掉的,插进新的),想直接实现,但是发现代码写起来很多if、逻辑复杂。
于是开始优化算法,写着写着又优化了一点、重新写,写着写着又优化了一点、又重新写。
最后accept。
总共一小时左右。

最后的算法:
     Step 1:遍历,找到overlap开始的index和结束的index
     Step 2: 如果开始的index为-1(就是没有overlap),为三种情况之一:list头加入new interval,list尾加入new interval,list中间(重新遍历找到插入的index)插入new interval。各自处理,最后return
     Step 3: 不然就是overlap了,求overlap区的最小和最大形成最后的real new interval,然后替换
     (这种算法比起上面提到的简朴算法最大的优点是避免了大量的大小boundry比较 - 那些太琐碎了)

plus:
     结果是比79%的同语言submit更快。
     surprise。我一般只比10%以下的submit更快。



回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-9 19:59:20 | 只看该作者
全局:
65 Valid Number

像是无聊的题目,而且一些人对结果有争议。
Let me skip for the current being
回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-10 18:12:41 | 只看该作者
全局:
本帖最后由 025ebaacad 于 2020-5-10 18:15 编辑

68. Text Justification

看了题目之后就想到比较直接的算法了,算法本身很简单(应该大部分人想得到吧) 但是我实现起来觉得代码多、逻辑稍稍复杂。submit 报错七八次、对应的bug修改改得久。读题 思考大约两分钟,实现大约三十分钟,改bug五十分钟



补充内容 (2020-5-11 13:47):
简单看了看Discussion,感觉这个比较可取:https://leetcode.com/problems/te ... -solution-10-lines. 回头仔细看看
回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-10 18:31:48 | 只看该作者
全局:
我需要提高刷题速度,所以我改了刷题方式

我在地里搜索了找leetcode答案的方法,感觉可行

Step 1 看题后自己思考,无论思考出solution与否都先看答案。
Step 2 随后实现,尽量选自己想出来的方法、performance差别太大就选答案。
Step 3&4 debug,submit
回复

使用道具 举报

🔗
laopeng1000 2020-5-11 01:46:14 | 只看该作者
全局:
rexue70 发表于 2020-5-4 15:12
楼主可以参加下每周的contest来衡量刷题感觉,我觉得前200左右算可以停了,500左右可以参加面试基本不会出 ...

1小时多点做出3题感觉已经是极限了 排名1400 1500 这样是不是无法面试。。。
回复

使用道具 举报

🔗
红A 2020-5-11 05:07:10 | 只看该作者
全局:
laopeng1000 发表于 2020-5-11 01:46
1小时多点做出3题感觉已经是极限了 排名1400 1500 这样是不是无法面试。。。

这个水平可以面试了,差不多做3道新题水平不错了。多做5次contest取个平均数,有些时候contest比较简单,可以做4道出来,有时候最后一题比较难大多数都是3道。
做的时候看自己做前三道是一开始就是正确思路还是走了弯路?是否写的时候需要大量的时间debug?我感觉差不多easy 5~15min, median 15~25min是一个比较正常的速度,然后最后一题留40~60min左右攻克hard。不过contest出题风格有时候不太稳定,有时候median题目反而比hard难。
我觉得contest稳定3道已经可以参加绝大多数onsite面试了,下一步是偶尔50% 4道,然后稳定4道,然后快速做出4道。后面的提升就比较慢了,好比考85分容易,85到95很难,95到100非常难。

评分

参与人数 2大米 +5 收起 理由
14417335 + 2
滚动的西瓜 + 3 很有用的信息!

查看全部评分

回复

使用道具 举报

🔗
laopeng1000 2020-5-11 11:20:17 | 只看该作者
全局:
本帖最后由 laopeng1000 于 2020-5-11 11:21 编辑
rexue70 发表于 2020-5-11 05:07
这个水平可以面试了,差不多做3道新题水平不错了。多做5次contest取个平均数,有些时候contest比较简单, ...
谢谢谢谢 很详细了
回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-11 13:39:44 | 只看该作者
全局:
再次改变刷题策略

Step 1 读题,思考
Step 2 看Discussion里的most voted,比较与自己思考出来的方法(如果思考出来的话

所有的题目暂时不实现了(实现一个最后不理想的方法还要debug花很多时间也不值得),先这样从理论上过一些题再说;期间注意算法中共性的方法的提取、记忆
回复

使用道具 举报

🔗
 楼主| 025ebaacad 2020-5-11 13:45:03 | 只看该作者
全局:
72 Edit Distance

思考了二十分钟,想到了一个非暴力破解的方法,但是估计实现、Debug起来会比较久

Discussion中暂时看了 这个,花了约三十分钟
https://leetcode.com/problems/ed ... tions-and-intuition

基本理解,但是对“ replace = 1 + self.minDistance(word1[1:], word2[1:])” 这一句还没想明白怎么证明其合理性

暂时到这里,选择Discussion,因为整体逻辑短、简单,实现起来简单
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表