二叉树的度 1.树的出度=树的入度=树的节点数-1;n0=5,n1=3,n2未知;树的出度=0*n0+1*n1+2*n2=n0+n1+n2-1得n2=4;故树的总节点数为:5+3+4=12 2.叶子节点个数=度为2的结点个数加1 ...
jdk7和jdk8中hashmap实现的区别(还是模糊) JDK7中的hashMap底层采用了数组+链表的数据结构实现数据存储,随着存储数据量的增大,Hash碰撞会越来越频繁。也就意味着链表会越来越长,查找效率不断降低。 JDK8解决了这个问题,对于hashMap采用了新的数据结构:数组+链表/红黑树(当链表长度达到某个阈值时,链表就转换成了红黑树...
红黑树(面试会问的数据结构) 要理解红黑树就要先理解二叉查找树 二叉查找树特征: 1.左子树上所有结点的值均小于或等于它的根结点的值。 2.右子树上所有结点的值均大于或等于它的根结点的值。 3.左、右子树也分别为二叉排序树。 二叉查找树的优点:查找所需数的最大次数为等同于二叉查找树的高度。插入的时候也是类似,通过...
Arrays.copyOfRange()方法 Arrays.copyOfRange()方法(比利用循环复制数组效率要高得多): 要使用这个方法,首先要import java.util.Arrays; Arrays.copyOfRange(original[ ],int from,int to) 将一个原始的数组original,从...
重建二叉树 题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:二叉树,毫无疑问的应该想到递归。 注意:...
Java中的内部类 为什么使用内部类? 1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题 2.每个内部类都能独立地继承一个接口的实现,所以无论外围类是否已经继承了某个接口的实现 内部类的特性(也可以回答上面的问题): (1)、创建内部类对象的时刻并不依赖于外围类对象的创建。 (2)、内部类提...
ArrayList ArrayList其实就是动态数组 java.util.ArrayList<E> 是非常重要的一个类,E表示泛型,ArrayList是一个泛型类。 与数组不同,数组一旦创建,长度固定,但是ArrayList的长度是动态的,不受限制,可以存储任意多的对象,但是只能存储对象,不能存...
ArrayList与LinkedList区别 注意:是LinkedList而不是LinkList。 ArrayList与LinkedList都是Collection接口下List接口的实现类 区别: ArrayList:ArrayList是基于动态数组的数据结构。 LinkedList(双向链表): 1.内部使用基于链表的数据...
从尾到头打印链表 题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 方法一:我们要返回的是ArrayList,所以就必须先定义一个ArrayList。然后ArrayList中有add(index,value),可以指定 index 位置插入 value 值。只要我们每次插入的位置都...
Java Object类中的方法有哪些 1.getClass方法 获得运行时类的类型。 2.hashcode方法 该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写 3.equals 方法 默认情况下(继承自Object类),equals和==是一样的(都是比较的对象的地址值)。但子类一般都要重...
替换空格 方法一:直接用String类的replace方法 方法二思路:因为String类对象是不可修改的,所以要想对原字符串进行操作就要考虑用Stringbuilder类(Stringbuffer也可以,但一般用Stringbuilder),因为用Stringbuilder创建的对象进行修改删除是不...
Java中的charAt() 方法(非面试) charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。 结果为: 转载于:https://my.oschina.net/u/4120977...
Java中replace方法 replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。 eg: //这里'o'是oldChar ,‘T’是newChar 返回结果:hellT 注意:如果是用Stringbuffer或者Stringbuilder定义的...
java中String StringBuilder StringBuffer的区别 1.String和StringBuilder,StringBuffer的区别 都是用来定义一个字符串的 String适用于字符串内容不变的操作,或者字符串操作很少时 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。因为和 String 类...
Java中的类加载机制(暂时) 1.加载 2.验证,3.准备,4.解析(这三个阶段称之为连接,连接阶段负责把类的二进制数据合并到JRE中)5.初始化 加载:加载阶段是类加载过程的第一个阶段。在这个阶段,JVM 的主要目的是将字节码(.class文件)从各个位置(网络、磁盘等)转化为二进制字节流加载到内存中,接着会为这个...
char可以存储汉字吗? 能。 char型变量是用来存储Unicode编码的字符的,而Unicode编码字符集中包含了汉字,所以char当然能存汉字,不过如果某个特殊字符没包含在Unicode编码的字符集中,那么char就不能存储这个汉字(char是两个字节的) ...
Java中创建子类实例时会创建父类实例吗? 不会! 创建子类实例的时候会调用父类的构造方法,但是构造方法被执行并不代表实例化了这个类。父类构造方法的执行,是为了给变量进行赋值。 转载于:https://my.oschina.net...
Java中==比较的是什么? 1、对于对象引用类型:“==”比较的是对象的内存地址。 所以就算两个对象的值相等,它们也是不等的(因为每个对象的地址都是不一样的) 2.对于基本类型数据,其实比较的是它的值。 所以一般用==来比较两个数字大小是不是相等的 ...
时间复杂度和空间复杂度的理解 时间复杂度 时间复杂度指的是算法语句的执行次数,并不是运行时间。一个算法语句的执行次数最终都是可以通过函数f(n)来表示的 eg: 这里的x++就是算法语句,其f(n)=10-x f(n)=n*n i++即算法语句,被执行次数为f(n)=n-i 但f(n)并不是时间复杂...
二维数组中的查找 题目: 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 思路一:暴力法 最容易想到的肯定就是暴力法,直接用两个for循环嵌套,然后把每一个...