随笔分类 - 算法
摘要:最长递增子序列 题目:给定数组 arr,返回 arr 的最长递增子序列。 举例:arr=[2,1,5,3,6,4,8,9,7],返回的最长递增子序列为[1,3,4,8,9]。 方法一:动态规划 这题递归可不好搞吧,时间复杂度貌似为o(n^3)。 我们用动态规划,leetcode仅仅让求最长递归子序列
阅读全文
摘要:我们只看看最基础的汉诺塔问题吧,左神的进阶问题就算了。。。:smiley: 很多人都将汉诺塔是什么,解题流程,然后一个代码就结束。 可是我对汉诺塔递归过程总是很迷惑,感觉很抽象,以下是我的理解。 比如汉诺塔的打印: public void hanoi(int n) { if (n > 0) { fu
阅读全文
摘要:快速幂 快速幂原理:将指数变为二进制,依次右移判断最后一位是否为1。 如果为1则应该将tmp乘到res中。 如果为0,则tmp自己平方,不放入res。 比如: 而10的二进制为1010,二进制从左往右,分别为第0位的(
阅读全文
摘要:首先我们从最基础的打印二叉树开始! 层序遍历打印二叉树 public void printByLevel(Node head) { if (head == null) { return; } Queue<Node> queue = new LinkedList<>(); queue.offer(he
阅读全文
摘要:我们知道dp也就是动态规划的思想就是先解决小问题,通过不断的解决小问题,最终解决大问题。那么能够应用树形dp套路的题目都应该符合一个条件,那就是通过解决每个子树的小问题,最终解决整棵树的大问题。 套路 分析有几种可能 需要哪些信息 汇总信息,构造ReturnType 构造递归函数 找到二叉树中的最大
阅读全文
摘要:之前为了求快,认为递归和动态规划是一类的,导致做了不少递归的题只能想到思路,但就是没法代码实现出来!!! 现在学习二叉树,我觉得对学习递归真的很有帮助! 二叉树的基础:遍历二叉树 二叉树遍历是基础,如果我们不能遍历二叉树,又如何对二叉树的节点进行操作呢? 二叉树的节点: /** * @author
阅读全文