java
文章平均质量分 81
a35155
这个作者很懒,什么都没留下…
展开
-
Leetcode 题解 - 树(1)
递归 一棵树要么是空树,要么有两个指针,每个指针指向一棵树。树是一种递归结构,很多树的问题可以使用递归来处理。 1. 树的高度 104. Maximum Depth of Binary Tree (Easy) Leetcode / 力扣 public int maxDepth(TreeNode root) { if (root == null) return 0; return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;原创 2022-03-29 22:06:18 · 173 阅读 · 0 评论 -
# 面向对象思想
一、三大特性 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外的接口使其与外部发生联系。用户无需关心对象内部的细节,但可以通过对象对外提供的接口来访问该对象。 优点: 减少耦合:可以独立地开发、测试、优化、使用、理解和修改 减轻维护的负担:可以更容易被理解,并且在调试的时候可以不影响其他模块 有效地调节性能:可以通过剖析来确定哪些模块影响了系统的性能 提高软件的可重用性 降低了构建大型系统的风险:原创 2022-03-28 22:15:14 · 166 阅读 · 0 评论 -
算法 - 算法分析
数学模型 1. 近似 N3/6-N2/2+N/3 ~ N3/6。使用 ~f(N) 来表示所有随着 N 的增大除以 f(N) 的结果趋近于 1 的函数。 2. 增长数量级 N3/6-N2/2+N/3 的增长数量级为 O(N3)。增长数量级将算法与它的具体实现隔离开来,一个算法的增长数量级为 O(N3) 与它是否用 Java 实现,是否运行于特定计算机上无关。 3. 内循环 执行最频繁的指令决定了程序执行的总时间,把这些指令称为程序的内循环。 4. 成本模型 使用成本模型来评估算法,例如数组的访问次数就是一种成原创 2022-03-25 21:39:10 · 152 阅读 · 0 评论 -
算法 - 符号表(2)
红黑树 红黑树是 2-3 查找树,但它不需要分别定义 2- 节点和 3- 节点,而是在普通的二叉查找树之上,为节点添加颜色。指向一个节点的链接颜色如果为红色,那么这个节点和上层节点表示的是一个 3- 节点,而黑色则是普通链接。 红黑树具有以下性质: 红链接都为左链接; 完美黑色平衡,即任意空链接到根节点的路径上的黑链接数量相同。 画红黑树时可以将红链接画平。 public class RedBlackBST<Key extends Comparable<Key>, Valu原创 2022-03-23 21:15:20 · 176 阅读 · 0 评论 -
算法 - 符号表(1)
前言 符号表(Symbol Table)是一种存储键值对的数据结构,可以支持快速查找操作。 符号表分为有序和无序两种,有序符号表主要指支持 min()、max() 等根据键的大小关系来实现的操作。 有序符号表的键需要实现 Comparable 接口。 public interface UnorderedST<Key, Value> { int size(); Value get(Key key); void put(Key key, Value value);原创 2022-03-22 21:34:17 · 179 阅读 · 0 评论 -
算法 - 并查集
前言 用于解决动态连通性问题,能动态连接两个点,并且判断两个点是否连通。 方法 描述 UF(int N) 构造一个大小为 N 的并查集 void union(int p, int q) 连接 p 和 q 节点 int find(int p) 查找 p 所在的连通分量编号 boolean connected(int p, int q) 判断 p 和 q 节点是否连通 public abstract class UF { protected int[] id;原创 2022-03-21 21:28:14 · 82 阅读 · 0 评论 -
算法 - 栈和队列
栈 public interface MyStack<Item> extends Iterable<Item> { MyStack<Item> push(Item item); Item pop() throws Exception; boolean isEmpty(); int size(); } 1. 数组实现 public class ArrayStack<Item> implements MyStack<原创 2022-03-17 22:38:33 · 85 阅读 · 0 评论 -
算法 - 排序
约定 待排序的元素需要实现 Java 的 Comparable 接口,该接口有 compareTo() 方法,可以用它来判断两个元素的大小关系。 使用辅助函数 less() 和 swap() 来进行比较和交换的操作,使得代码的可读性和可移植性更好。 排序算法的成本模型是比较和交换的次数。 public abstract class Sort<T extends Comparable<T>> { public abstract void sort(T[] nums);原创 2022-03-16 21:23:31 · 134 阅读 · 0 评论