1 Fly_Fly_Zhang

尚未进行身份认证

初学java

等级
博文 328
排名 1w+

hashCode和equals

equals()用于判断两个对象是否相等,这是大家公认的。hashCode()被设计是用来使得哈希容器能高效的工作。为什么这么说?在java中,有一些哈希容器,比如Hashtable,HashMap等等。当我们调用这些类的诸如get(Objectobj)方法时,容器的内部肯定需要判断一下当前对象obj在容器中是否存在,以便进行后续的操作。判断是够存在,肯定是要比较两个对象是否相等,我们"应该...

2019-07-15 21:20:46

数据结构-SkipList(跳跃表)

前面概念性以及图例引用了这位博主博客:请点击跳跃表概述:红黑树实现了一颗高效的二叉查找树,其增删查的时间复杂度为O(log2N),但是其实现起来有点复杂。跳跃表是一种以更加便捷的方式实现了和红黑树增删查操作时间复杂度一样的数据结构。JUC并发包中提供了一个ConcurrentSkipLIstSet的实现,是一个线程安全的跳跃表,基于CAS实现的线程安全。缺点:跳跃表会浪费大量内存,在海...

2019-07-15 21:07:45

JDBC-JDBC组件&JDBC编程步骤

JDBC概述java提供的一套操作数据库数据的应用编程接口,在用连接jdk所提供的相应实现类。JDBC组件DriverManager:一系列的数据库驱动程序,匹配连接使用通信协议从java应用程序中获取合适的数据库驱动程序。Connection:所有和数据库相关的上下文操作通过该接口的实现类来提供数据库的事务操作,Statement对象等接口方法。Statement:使用创建该接口...

2019-07-15 14:57:06

算法-回溯算法-子集树(装载问题/0-1背包问题)

什么是解空间:解空间就是问题所有解的可能取值构成的空间,一个问题的解往往包含了得到这个解的每一步,就是对应解空间树中一条从根节点到叶子结点的路径。回溯算法:在问题的解空间树中,按深度优先策略,从根节点出发搜索解空间树,算法搜索至解空间的任意节点时,先判断该节点是否包含问题的解,若不包含则跳过对以该节点为根节点的子树的搜索,逐层向其祖先节点回溯。否则进入该子树,继续按根深度优先搜索。子集树:...

2019-07-14 18:30:35

数据结构-RBTree(红黑树)

概述:红黑树是不是一颗平衡树:不是,其高度差可以达到n红黑树结点左右子树高度差:长的不能超过短的二倍。因为需要保证所有路径上黑色节点数量相等,因此若一条节点路径全部是黑色,另一条路径红黑相间也只能插入2n个。红黑树的增删效率?高于AVL树,红黑树插入最多调整两次,删除调整三次。AVL树最多调整次数达到层数次。红黑树特点:每个节点都有颜色,非黑即红。所有叶子节点都是黑色的,叶...

2019-07-14 12:22:22

剑指Offer-二叉树的下一节点

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:中序遍历为LVR。我们进行分析,若当前节点有右子树,那么下一节点肯定在其右子树,对右子树一直进行向左遍历。若当前节点为父节点的左子树,直接返回父节点,若不是,则一直向上遍历满足条件的父节点。代码实现:/*publicclassTree...

2019-07-13 17:27:35

剑指Offer-二叉搜索树的第k个节点

题目:给定一棵二叉搜索树,请找出其中的第k小的结点。例如,(5,3,7,2,4,6,8)中,按结点数值大小顺序第三小结点的值为4。思路:求第k大或者第k小这种顺序遍历。我们使用中序遍历。求第K小我们使用LVR。求第K大我们使用RVL。代码实现:/*publicclassTreeNode{intval=0;TreeNodeleft=null...

2019-07-13 16:55:45

剑指Offer(39_2)-判断一颗二叉树是不是平衡二叉树

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:采用后续遍历,判断返回的左右子树的高度差是不是大于1。代码实现:publicclassSolution{privateintTreeDepth(TreeNoderoot){if(root==null)return0;intl=TreeDept...

2019-07-13 16:39:59

剑指Offer(39)-二叉树的深度

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:我们每次比较左右子树的深度,得到深度最大的,加一在返回上层递归调用。代码实现:/**publicclassTreeNode{intval=0;TreeNodeleft=null;TreeNoderight...

2019-07-13 16:23:37

剑指Offer(27)-二义搜索树与双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:对于二叉树,只要想到有序,那么我们直接想到中序遍历。中序遍历为LVR。此题让我们返回有序链表的头结点。如果我们使用LVR,并且L返回的是头结点,那么再代码实现:/**publicclassTreeNode{intval=0;Tr...

2019-07-13 16:15:14

剑指Offer(25)-二叉树中和为某一值的路径

题目:输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意:在返回值的list中,数组长度大的数组靠前)思路:我们采用递归的思路进行处理,每当深度递归时将当前节点值压入临时链表list中。若当前节点恰好为叶子节点并且target为0时,那么这就是我们找到的一条路径。我们将此条路径压入lis...

2019-07-13 15:05:43

剑指Offer(24)-二叉搜索树的后续遍历序列

题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:后序遍历为LRV。因此数组最后一位为根节点。数组前半段为其左子树,后半段为其右子树,再每层递归时,我们找到左右子树的分割点,分别判断左右子树是否小于/大于根节点,然后在对左右子树进行递归。代码实现:publicclassSolution...

2019-07-13 12:35:59

剑指Offer(23)-从上往下打印二叉树

题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路:使用一个队列,将左右孩子分别压入队列中,每次取出一个元素重复之。那么实际上就是按层进行存放的。代码实现:importjava.util.ArrayList;/**publicclassTreeNode{intval=0;TreeNodeleft=null;TreeNod...

2019-07-13 12:11:06

剑指Offer(19)-二叉树的镜像

题目:题目描述:操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/610/\/57911镜像二叉树8/106/\/11975思路:采用递归,每次递归前先将左右孩子调换,然后再对左右孩子进行递归。代码实现:/**publicclassTreeNode{int...

2019-07-13 11:51:52

剑指Offer(18)-判断是不是子树

题目:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路:这道题我们要注意的是,其是二叉树,而不是BST树。因此其节点可能会重复,也不会存在左边小,右边大的情况。因为我们再寻找子树的过程中,需要穷举,只要没有找到子树,那么我们就继续寻找root1和root2相同的根节点再去判断子树。代码实现:/**publicclassTreeNode...

2019-07-13 11:51:33

LeetCode(626)-换座位

题目:小美是一所中学的信息科技老师,她有一张seat 座位表,平时用来储存学生名字和与他们相对应的座位id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个SQLquery 来输出小美想要的结果呢?示例:±--------±--------+|id|student|±--------±-...

2019-07-10 17:12:16

LeetCode(180)-连续出现的数字

题目:编写一个SQL查询,查找所有至少连续出现三次的数字。±—±----+|Id|Num|±—±----+|1|1||2|1||3|1||4|2||5|1||6|2||7|2|±—±----+例如,给定上面的Logs表,1是唯一连续出现至少三次的数字。±...

2019-07-10 16:41:26

LeetCode(178)-分数排名

题目:编写一个SQL查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。±—±------+|Id|Score|±—±------+|1|3.50||2|3.65||3|4.00||4|3.85||5|4.0...

2019-07-10 16:25:25

LeetCode(176)-第二高的薪水/第N高的薪水

题目:编写一个SQL查询,获取Employee表中第二高的薪水(Salary)。±—±-------+|Id|Salary|±—±-------+|1|100||2|200||3|300|±—±-------+例如上述Employee表,SQL查询应该返回200作为第二高的薪水。如果不存在第二高的薪水,那么...

2019-07-10 15:40:05

LeetCode(184)-部门工资最高的员工

题目:Employee表包含所有员工信息,每个员工有其对应的Id,salary和departmentId。±—±------±-------±-------------+|Id|Name|Salary|DepartmentId|±—±------±-------±-------------+|1|Joe|70000|1...

2019-07-10 15:06:30
奖章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 脉脉勋章
    脉脉勋章
    绑定脉脉第三方账户获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。