解题思路简介,编程就是数据结构+算法!
个人刷题记录,帮助入门者开始LeetCode。尽量争取一题多解,将每种解法解释清晰。
使用搜索功能(浏览器上快捷键一般是Ctrl+F)搜索题号,即可查看解法思路介绍的文章。
为了绝大多数国内用户访问,原链接指向leetcode.cn
对于刚开始从LeetCode的新人,以下问题你可能感兴趣:
Q:刷LeetCode需要什么基础吗?
A:必然需要的,首先要对使用的语言熟悉,其次要有完整的数据结构知识体系。如果非要加一个程度说明的话,就是本科数据结构课程没有死角。(并不是完全精通,否则还来LeetCode干什么)
Q:标签为简单的题我都很吃力,看了解析才做出来,这正常吗?
A:首先,这十分正常,正如说话从咿呀开始一样,代码也是从简单开始的,需要重点关注的并不是这道题我做出来没,而是这道题我学到了什么;其次,LeetCode的标签只有三挡,并不能很好的说明难度,同一个档下难度千差万别,简单比中等难都是常见情况。以我浅薄的经验,当你刷题超过32道(甚至更少)时,你就会建立持续的正反馈,代码能力就不断提升了。
Q:答案和解析我都看不明白,怎么才能把代码搞懂?
A:算法极度抽象,如果随随便便都看明白了,那赶紧读数学的研究生或者博士去,这个世界需要英雄,别在代码上浪费生命了。若感到抽象的无法理解,请赶快拿出纸笔,一步一步把算法的过程画出来,慢慢画,就会理解的。(数无形时少直觉,形少数时难入微,数形结合百般好。——华罗庚)
Q:LeetCode之类的网站上写代码没有IDE方便,我该用IDE还是网页上一个一个的敲?
A:都可以,这对编程能力的养成没有什么影响。用IDE写,可以利用里面强大的调试器,更容易弄明白程序的运行过程。如果需要在网页写代码的话,可以使用print调试法,将System.out.println包装成一个p(String s);函数就好了,一个字母容易输入容易删除。不要听信做算法题不能使用调试器的言论,这就如同写代码必须用emacs一样可笑。
26:删除排序数组中的重复项 -(原链接)-(解法)-(简单、数组)
122:买卖股票的最佳时机 II -(原链接)-(解法)-(简单、数组)
136:只出现一次的数字 -(原链接)-(解法)-(简单、数组)