02 2022 档案
摘要:矩阵的最小路径和 题目:矩阵的最小路径和 《程序员代码面试指南》第57题 P185 难度:尉★★☆☆ 本题看了迪杰斯特拉算法受到了启发,才想出来了。还是太菜了…… 经典动态规划方法: 简单来说,就是生成和原矩阵一样大小的矩阵dp,dp[i][j]的值表示从(0,0)位置走到(i,j)位置的最小路径和
阅读全文
摘要:斐波那契数列问题的递归和动态规划 题目:斐波那契数 & 爬楼梯 & 斐波那契数列问题的递归和动态规划3 《程序员代码面试指南》第56题 P179 难度:将★★★★ 这三个问题本质上都是斐波那契数列的问题。 首先是基本的斐波那契数问题。一共有三种解法。 第一种时间复杂度为O(2N),即暴力递归。(也是
阅读全文
摘要:调整搜索二叉树中的两个错误的节点 题目:找到搜索二叉树中两个错误的节点 《程序员代码面试指南》第41题 P137 难度:尉★★☆☆ (只看原问题,进阶问题难度将,解答不可能看的懂) 如果没有错误节点,那么搜索二叉树的中序遍历的节点值是一直升序的。如果有两个节点位置错了,就一定会出现降序。 出现降序有
阅读全文
摘要:统计和生成所有不同的二叉树 题目:不同的二叉搜索树 & 不同的二叉搜索树 II 《程序员代码面试指南》第54题 P173 难度:尉★★☆☆ 原问题只是统计二叉树的数量。 首先,如果中序遍历有序且无重复值,则二叉树必为搜索二叉树。 假设num(a)代表a个节点的搜索二叉树有多少种可能。再假设序列为{1
阅读全文
摘要:通过有序数组生成平衡搜索二叉树 题目:将有序数组转换为二叉搜索树 《程序员代码面试指南》第47题 P152 难度:士★☆☆☆ 通过数组生成很简单,只需要用有序数组最中间的数生成搜索二叉树的头节点,然后其左边和右边的数分别作为头节点的左子树和右子树即可,然后再往下递归,最终生成整棵二叉树。 publi
阅读全文
摘要:在二叉树中找到两个节点的最近公共祖先 题目:在二叉树中找到两个节点的最近公共祖先 《程序员代码面试指南》第49题 P155 难度:原问题 士★☆☆☆ 进阶问题 尉★★☆☆ 原问题解法,后序遍历二叉树,假设遍历到的当前节点为cur。因为是后序遍历,所以先处理cur的两棵子树。假设处理cur左子树时返回
阅读全文
摘要:在二叉树中找到一个节点的后继节点 题目:在二叉树中找到一个节点的后继节点 《程序员代码面试指南》第48题 P153 难度:尉★★☆☆ 本题定义了一种新的二叉树节点类型: public class Node { public int value; public Node left; public No
阅读全文
摘要:根据后序数组重建搜索二叉树 题目:根据后序数组重建搜索二叉树 《程序员代码面试指南》第45题 P148 难度:士★☆☆☆ 原问题为判断数组arr是否可能是搜索二叉树后序遍历的结果,进阶问题为通过数组arr重构二叉树。 原问题的解法:根据二叉树后序遍历的顺序——左-右-根,头节点的值一定是数组的最后一
阅读全文