经典题思路

递归

爬楼梯 斐波那契

  • 直接递归
  • 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)

  • 递归

查找算法:
二分
顺序
插值
斐波那契
树表
分块
哈希

------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
itingyu 微信打赏 微信打赏