LeetCode
本栏目所有题目均按照难易程度以及知识点顺序依次排列,建议从每一个子栏目的第一道题开始,依次做下去。
部分题目会在多个栏目出现,此时,请按照栏目分类使用对应的方法实现。
当某个方法或技巧第一次出现时,我们将详细解释该方法的原理,在之后的题目中如果使用了对应方法,我们将不解释思路,直接附上出现该方法的链接供参考。
以下标题的链接,如果可以点击,则为该分类的相关概念专题,如果对相关概念不熟悉,可以先阅读该专题的基础知识。
我们使用的语言主要以Java
为主,不使用Python
、Javascript
、Lua
等语言的原因是Python
等脚本语言里面的语法糖和库函数太多,不利于算法底层原理的学习;不使用C/C++的原因是,这个答案的主要面向群体不擅长使用C/C++
。
做题通用方法
- 读题
- 理解题意
- 找出边界情况
- 实现(如实在无思路,可使用暴力法或直觉算法实现)
- 优化剪枝
如何复习
- 读题
- 在脑海中想出这道题的所有思路(如果没有思路,先看答案)
- 用笔实现,不要用电脑
- 用电脑再敲一遍,不要用编译器,直接用系统记事本如notepad
- 运行,调试bug,看答案,改错,过几天重新做
PS. 看完答案感觉自己会了,跟LeetCode一次过,跟在白板上书写一次过是完全不同的三件事情
数学
逆序
位运算
未分类
递归
搜索
二分搜索
链表
- 234. Palindrome Linked List
- 1019. Next Greater Node In Linked List
- 876. Middle of the Linked List
- 206. Reverse Linked List
- 237. Delete Node in a Linked List
- 21. Merge Two Sorted Lists
- 83. Remove Duplicates from Sorted List
- 82. Remove Duplicates from Sorted List II 328 455 203 707 141 142 160 19 148 725 61 87 92 143 445