11 2019 档案

摘要:判断一棵树是不是另一棵树的子结构其实逻辑还是比较清晰的,假设判断A是是不是B的子结构。显然为真的条件是 以B树中任意一个节点为根的树和A可以进行匹配就为真。 public static boolean dfs(TreeNode root1, TreeNode root2) { if (root1 ! 阅读全文
posted @ 2019-11-24 22:18 小小小小的我 阅读(176) 评论(0) 推荐(0)
摘要:这里所求的最长公共子序列,指的是最长公共子序列的长度。 基本思路和求最长公共子串差不多 只是在一处有差别,代码也比较简单。 public static int lcs(String s1, String s2) { int len1 = s1.length(); int len2 = s2.leng 阅读全文
posted @ 2019-11-15 22:57 小小小小的我 阅读(181) 评论(0) 推荐(0)
摘要:public static String lcStr(String s1, String s2) { int len1 = s1.length(); int len2 = s2.length(); int max = 0; //flag 表示最长功能子串起始位置 int flag = -1; if 阅读全文
posted @ 2019-11-15 16:09 小小小小的我 阅读(103) 评论(0) 推荐(0)
摘要:数据结构中的堆是一颗完全二叉树,一般由数组实现(也有优先队列),这篇主要讲一下用数组实现的堆。 1: 对一个普通数组进行堆排序(尤其是原地排序,不能占用额外空间的)其实这样的堆排序我很难说他实现了堆,它只是对普通数组使用了堆的特性 (并没有堆的数据结构的实现) 这种一般要经过两个步骤: 1 建堆 把 阅读全文
posted @ 2019-11-15 14:25 小小小小的我 阅读(200) 评论(0) 推荐(0)
摘要:位图(bitmap)的原理是用一个位来表示一个数字(准确说是用数组下标和一个位来表示)。 java中一个int类型占4Byte,32字节。如果我们使用位图来存储数据。那么一个int类型就可以存储32个数据。 //假设我们要存储20亿整数 private static final int N = 20 阅读全文
posted @ 2019-11-11 17:06 小小小小的我 阅读(1139) 评论(0) 推荐(0)
摘要:我在最开始遇到这个问题时是很疑惑地,因为我只重写了equals但是并没有出现什么问题。其实首先要明白一点的是重写equals时重写hashcode 并不是java语法层面的问题。而是一种通用约定。因为java中基于散列的集合实现了这个约定。所以当你的类在集合这样的数据结构中使用,也需要遵守这种约定。 阅读全文
posted @ 2019-11-11 13:21 小小小小的我 阅读(503) 评论(0) 推荐(0)
摘要:这道题其实本身没有什么难度,就是层序遍历保留每一层最后一个值。但是以什么方式来区分每一层还是有不同思路的。 public static List<Integer> rightSideView(TreeNode root) { if (root == null) { return new ArrayL 阅读全文
posted @ 2019-11-10 10:50 小小小小的我 阅读(319) 评论(0) 推荐(0)
摘要:有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 游戏从「一号」玩家开始(「一号」玩家为红色,「二号」玩家为蓝色),最开始时, 「一号」玩家从 [1, n] 中取一个值 x(1 < 阅读全文
posted @ 2019-11-08 14:39 小小小小的我 阅读(288) 评论(0) 推荐(0)
摘要:给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。通过给定的数组构建最大二叉树,并且输出这个树的根节点。 这道题其实有点像有先序遍历和中序遍历构 阅读全文
posted @ 2019-11-08 13:56 小小小小的我 阅读(131) 评论(0) 推荐(0)
摘要:二叉树最近公共祖先的定义为:“对于二叉树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大,一个节点也可以是它自己的祖先。 在讨论二叉树的最近公共祖先之前,其实可以先讨论一下二叉搜索树的最近公共祖先。显然我们可以利用二叉搜索树的性质进行解决。 阅读全文
posted @ 2019-11-08 12:40 小小小小的我 阅读(453) 评论(0) 推荐(0)
摘要:javaCompiler简单来说就是一个用来调用java语言编译器的接口,我们使用它可以实现对其他路径下或者远程代码的编译。 显然我们可以实现这样一种操作,将一串符合java语法的字符串写入一个java文件中。然后利用javaCompiler编译此文件。最后通过 反射的方法实现对此文件的运行(onl 阅读全文
posted @ 2019-11-07 14:24 小小小小的我 阅读(3229) 评论(0) 推荐(1)
摘要:自定义类加载器其实就是通过继承classLoader类,并重写findClass方法来实现自定义类加载器的效果 import java.io.*; /** * 简单文件系统类加载器 * 通过输入类的全限定名在指定文件路径下加载class */ public class FileSystemClass 阅读全文
posted @ 2019-11-06 16:44 小小小小的我 阅读(190) 评论(1) 推荐(0)
摘要:组合(Composition)表示的是部分整体的关系,比如一辆汽车和汽车零件的关系,如果没有这个汽车,也就不会有这辆汽车的零件,反之没有零件也就没有汽车。 聚合(Aggregation)表示的是has-a的关系,比如文具盒和文具盒里的文具,它们是相互独立的。 显然就关系的紧密程度来说,组合更加紧密。 阅读全文
posted @ 2019-11-06 14:46 小小小小的我 阅读(806) 评论(0) 推荐(0)
摘要:拓扑排序,首先它是一种排序。不过是应用在有向无环图上,将图的结点按照某种规则排成一个线性队列。只不过排序的规则是 对于任意两个结点(u,v),如果他们之间存在边(u->v),那么u必须出现在v之前。 满足拓扑排序的一个有向无环图 那么按照上面的规则我们可以这样实现拓扑排序 1: 找到所有初始入度为0 阅读全文
posted @ 2019-11-06 09:49 小小小小的我 阅读(181) 评论(0) 推荐(0)