经典题思路
递归
爬楼梯 斐波那契
- 直接递归
- hash表
- 定义两个变量
两数之和(leetcode 1)
- 暴力求解
- hashMap避免二次扫描
合并两个有序数组(leetcode 88)
- 利用Arrays的方法,合并后再排序
- 临时数组+双指针(取小)
- 双指针(倒序遍历,取大)
移动零 (leetcode283)
- 双指针(一个指向非零,一个指向挪动的目标位置)
找到所有数组中消失的数字(leetcode 448)
- 标记下标法(负号或者加某个数)
链表 (递归理解为链表变短了)
合并两个有序链表 (leetcode 21)
- 双指针
- 递归
删除排序链表中的重复元素
- 双指针
- 递归
环形链表(leetcode 141)(判断是否有环)
- hash表法
- 快慢指针(是否相遇)
环形链表(leetcode 142)(判环和入环第一个位置)
- 快慢指针(相遇后,都一步一步移动)
相交链表 (leetcode 160)
- 穷举
- hash表法
- 双指针(移动到尾时,指向另一个链表头)
- 双指针(计算长度差d,然后长的先移动d)
反转链表(leetcode 206)
- preNode
回文链表(leetcode 234)
- 复制到数组中,然后双指针(相遇前值是否相同)
- 快慢指针找到中点,然后后半部分反转后,再逐一比较两部分(注意链表节点数目为奇数时)
链表的中间节点(leetcode 876)
- 复制到数组中,找中间下标
- 快慢指针找中点
链表中倒数第k个节点 (leetcode 876)
- hash表存正数位置
- 遍历得长度,再遍历
- 快慢指针(使得两个指针相距k-1,然后步长都为1,快指针到表尾时即可)
栈和队列
用栈实现队列 (leetcode 232)
- 两个栈(输入栈和输出栈)
字符串解码(leetcode 394)
- 栈,中括号配对后,弹栈,看左中括号右边的字符(注意数字可以是多位数)
树
二叉树的中序遍历(leetcode 94)
二叉树的前序遍历(leetcode 144)
二叉树的后序遍历(leetcode 145)
对称二叉树(leetcode 101)
- 递归(只要不相等就退出)
- 队列
二叉树的最大深度 (leetcode 104)
- 递归遍历
- 队列
平衡二叉树(leetcode )(判断是否为平衡二叉树)
- 递归(从上往下递归,从下往上回溯)
翻转二叉树 (leetcode 226)
- 递归
查找算法:
二分
顺序
插值
斐波那契
树表
分块
哈希
------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
微信打赏