随笔分类 -  算法

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

点击右上角即可分享
微信分享提示
主题色彩