06 2021 档案

摘要:本文会从递归反转整个单链表开始拓展 递归反转整个链表 先直接看实现代码: ListNode reverse(ListNode head) { if (head.next == null) return head; ListNode last = reverse(head.next); head.ne 阅读全文
posted @ 2021-06-17 20:30 RealGang 阅读(97) 评论(0) 推荐(0) 编辑
摘要:快速排序就是个二叉树的前序遍历,归并排序就是个二叉树的后序遍历 简单分析一下他们的算法思想和代码框架: 快速排序的逻辑是,若要对 nums[lo..hi] 进行排序,我们先找一个分界点 p,通过交换元素使得 nums[lo..p-1] 都小于等于 nums[p],且 nums[p+1..hi] 都大 阅读全文
posted @ 2021-06-17 19:33 RealGang 阅读(124) 评论(5) 推荐(1) 编辑
摘要:二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 遇到任何递归型的问题,无非就是灵魂三问: 1、这个函数是干嘛的? 情况 1,如果p和q都在以root为根的树中,函数返回的即使p和q的最近公共祖先节点。 情况 2,那如果p和q都不在以root为根的树中怎么办呢?函数理所 阅读全文
posted @ 2021-06-16 22:00 RealGang 阅读(84) 评论(0) 推荐(0) 编辑
摘要:前序遍历框架如下: void traverse(TreeNode root) { if (root == null) return; // 前序遍历的代码 traverse(root.left); traverse(root.right); } 后序遍历的代码框架: void traverse(Tr 阅读全文
posted @ 2021-06-16 15:38 RealGang 阅读(121) 评论(0) 推荐(0) 编辑
摘要:原型模式 适用场景: 原型模式主要解决的问题就是创建重复对象,⽽而这部分 对象 内容本身⽐比较复杂,生成过程可能从库或者 RPC接口中获取数据的耗时较长,因此采⽤用克隆的方式节省时间。 原型模式主要解决的问题就是创建⼤大量量重复的类, 案例:实现一个上机考试抽题的服务,因此在这里建造一个题库题目的场 阅读全文
posted @ 2021-06-15 23:09 RealGang 阅读(78) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树的升序输出或者升序查找第k个元素之类的问题可以依靠中序遍历,BST 相关的问题,要么利用 BST 左小右大的特性提升算法效率,要么利用中序遍历的特性满足题目的要求 如果当前节点会对下面的子节点有整体影响,可以通过辅助函数增长参数列表,借助参数传递信息。 在二叉树递归框架之上,扩展出一套 B 阅读全文
posted @ 2021-06-10 20:28 RealGang 阅读(138) 评论(0) 推荐(0) 编辑

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