以下是一些LeetCode上的经典题目,涵盖了不同的算法和数据结构:
1. 两数之和(Two Sum):在数组中找出两个数的索引,使它们的和等于目标值。
2. 盛最多水的容器(Container With Most Water):找出给定的一系列非负整数,构成的容器可以容纳最多的水。
3. 整数反转(Reverse Integer):反转给定整数的数字顺序。
4. 两两交换链表中的节点(Swap Nodes in Pairs):交换链表中相邻的两个节点。
5. 有效的括号(Valid Parentheses):判断一个字符串中的括号是否匹配。
6. 下一个排列(Next Permutation):找到给定序列的下一个更大的排列。
7. Pow(x, n):实现计算x的n次幂的函数。
8. 合并两个有序链表(Merge Two Sorted Lists):合并两个有序链表为一个新的有序链表。
9. 最长有效括号(Longest Valid Parentheses):找到给定字符串中最长的有效括号子串的长度。
10. 字母异位词分组(Group Anagrams):将一组字符串按照字母异位词分组。
当然,还有很多其他经典题目可以探索和练习。刷题的关键是理解问题的要求,分析解决思路,写出正确的代码,并进行测试和调试。建议你在刷题过程中注重基础知识的巩固,并结合算法书籍和在线教程进行学习。
如何刷LeetCode:
当年自己第一遍刷的时候,特别痛苦。一天就3道题,持续了两个月吧。后来刷的多了,一天5道,再往后,一天10道,15道。刷了两遍后,一天可以30道也不累。以现在的水平,可以一天100道。毕竟很多题刷的太熟了,就是在打字。
简单说一下我认为的刷题几个阶段,这是上课时和学生说的:
- 1,第一遍:知道。直接看答案,不要自己想,了解所有最优解,方法技巧第一。做题套路,以印象为主。
- 2,第二遍:熟悉。过easy题,记住;做medium,重点题背,反复背。最简单会,大多不会。记住做题套路,以记住为主。
- 3,第三遍:做题。做easy题;做部分medium题,hard题有思路。夯实medium基础。熟练运用做题套路,以做题为主。
- 4,面经:做面经,开阔思路,了解出题形式。基础决定上层建筑,基础牢轻松,不牢就痛苦
- 5,第四遍以上:刷题。
其实我感觉,在前4个阶段,都不叫“刷题”,那是做题,在学习,只有在第四遍,才叫刷题。没有人一遍就会,大多数人都向快。直接做题,不管不顾基础知识。很多人连Segment Tree,BIT,Trie,Union Find这种数据结构都不懂,遇见就刷,自己想,怎么可能想的出来?
所以刷题最重要的,第一步,就是了解所有的数据结构,做题方法,基础算法从基础数据结构HashMap,HashSet,到TreeSet,TreeMap,Deque,LinkedHashMap;到各种对刷题来说的基础算法,各种排序算法,DFS,BFS,Sliding Window,sweep line,等等。99%的人这些都没有学过,就直接做题,做两道就想类似的题自己能做出来。