一、数组
- 给定一个整数数组,找到其中的两个数,使得它们的和等于一个特定的目标值。(例如:输入数组 [2, 7, 11, 15],目标值为 9,输出应为 [0, 1],因为 2 + 7 = 9。)
- 可以使用暴力枚举法,也可以用哈希表优化查找过程。
- 移除数组中的重复元素,使得每个元素只出现一次,并返回新数组的长度。(例如:输入 [1, 1, 2],输出长度为 2,数组变为 [1, 2]。)
- 可以使用双指针法或者利用哈希表记录已出现的元素。
- 给定一个排序数组和一个目标值,在数组中找到目标值出现的起始和结束位置。(例如:输入 [5, 7, 7, 8, 8, 10] 和目标值 8,输出 [3, 4]。)
- 可以利用二分查找的思想分别查找目标值的左右边界。
二、链表
- 反转一个单链表。(例如:输入 1->2->3->4->5,输出 5->4->3->2->1。)
- 可以使用迭代或者递归的方法实现。
- 给定两个非空链表,表示两个非负整数。每个链表中的节点按逆序存储数字,将两个数相加并以链表形式返回结果。(例如:输入 (2 -> 4 -> 3) 和 (5 -> 6 -> 4),输出 7 -> 0 -> 8。)
- 模拟加法运算,注意进位处理。
- 判断一个链表是否为回文链表。(例如:输入 1->2->2->1,输出 true。)
- 可以使用快慢指针找到链表中点,然后反转后半部分链表进行比较。
三、栈和队列
- 用栈实现队列的操作(
push、pop、peek、empty)。- 需要使用两个栈来模拟队列的行为。
- 用队列实现栈的操作(
push、pop、top、empty)。- 同样可以使用两个队列来实现。
- 给定一个只包含括号
'('、')'、'{'、'}'、'['、']'的字符串,判断字符串中的括号是否合法。(例如:输入 "()[]{}",输出 true。)- 利用栈来匹配括号。
四、树
- 二叉树的前序、中序、后序遍历。
- 可以用递归和迭代两种方式实现。
- 给定一个二叉树,判断它是否是高度平衡的二叉树。(一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。)
- 可以通过递归计算每个节点的左右子树高度,然后判断是否平衡。
- 实现二叉搜索树的插入、删除和查找操作。
- 利用二叉搜索树的性质进行操作。
五、哈希表
- 给定一个字符串,找到其中第一个不重复的字符。(例如:输入 "leetcode",输出 'l'。)
- 可以使用哈希表记录字符出现的次数,然后再次遍历字符串找到第一个出现次数为 1 的字符。
- 设计并实现一个哈希集合或哈希映射数据结构。
- 考虑哈希函数的设计、冲突解决方法等。
六、图
- 深度优先搜索(DFS)和广度优先搜索(BFS)遍历图。
- 需要使用合适的数据结构(如栈和队列)来辅助遍历。
- 判断一个无向图是否存在环。
- 可以使用并查集或者深度优先搜索来判断。
- 找到图中的最短路径问题,如迪杰斯特拉算法和弗洛伊德算法。
- 理解算法的原理和实现过程。
4万+

被折叠的 条评论
为什么被折叠?



