Skip to content

lkxyyjx/leetCodeInJava

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 

Repository files navigation

leetCodeInJava

  • 是时候开始刷题了!

dp问题一般思路与解法

  • 【状态】与【选择】
    • dp问题一般需要抓住【状态】与【选择】,【状态】就是在确定的一组具体参数下能确定目标结果;【选择】就是一些具体的操作
    • 【选择】会导致【状态】的变化,也可以由此得出dp问题的状态转移方程
    • 找出状态转移方程后,再明确base condition(或者说是边界条件),这个时候dp问题如何解决一般就非常明晰了
  • 实现细节
    • 可以基于【选择】去循环计算出每一个状态,也可以基于【状态参数】去循环计算出每一个状态
    • 递归实现时,需要避免重复的状态计算,避免多余的计算和减少调用栈,可以设置一个数组保存已经计算过的【状态】

回溯问题的一般思路与解法

  • 找到问题的一般过程与边界条件,使用递归实现时先确定递归参数,注意留意过程中的对象变量
  • 明确哪些操作是要递归前完成的,哪些操作是需要在递归后完成的
  • 递归实现时,如果担心调用栈过长或者理不清递归逻辑,过程可以使用循环+stack替代实现

二叉树问题的一般思路与解法

  • 二叉树问题切入点无非就是从几种遍历来考虑问题
    • 搜索树的中序遍历是排序的
    • 前序遍历的第一个元素是根
  • 再就考虑递归中需要做什么,例如
    • 哪些变量需要记录下来
    • 递归函数参数如何设计
    • 返回值r,一般考虑为是需要左右子树的rLeft,rRight计算出来以后才可以得到的值。例如判断平衡二叉树时返回值可以是该树的深度,-1表示不平衡, r = rLeft != 1 && rRight != -1 ? (abs(rLeft - rRight) > 1 ? -1 : max(rLeft, rRight)) : -1

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages