- 博客(13)
- 收藏
- 关注
原创 Java基础
1.String,StringBuffer和StringBuliderString是字符串常量,StringBuffer和StringBuilder都是字符串变量。String类型是不可改变的对象,由于这种机制,每当用String对字符串做拼接时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,执行效率就会很低。特殊情况:String str = “This is ...
2018-09-18 10:31:28 341
原创 “二叉树的深度”和“平衡二叉树”
题目描述二叉树的深度:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的节点定义如下:public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public Tre...
2018-09-10 09:38:35 2146
原创 输入一个网址后发生了什么
当你在浏览器输入一个网址,如http://www.taobao.com,按回车之后发生了什么?请从技术的角度描述,如浏览器、网络(UDP、TCP、HTTP等),以及服务器等各种参与对象上由此引发的一系列活动,请尽可能的涉及到所有的关键技术点。1.DNS解析DNS解析的过程就是寻找哪台机器上有你需要资源的过程,寻找的过程遵循就近原则。输入一个网址并按回车的时候浏览器会根据输入的URL去查...
2018-09-09 13:42:40 26571 2
原创 “和为S的两个数字”和“和为S的连续正数序列”
题目描述和为S的两个数字:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。因为给出的数组是排好序的,所以我们就可以在有序数组中放两个指针用于查找符合条件的两个数字。首先定义两个指针,第一个指针指向数组的第一个(最小的)数字,第二个指针指向数组的第二...
2018-09-09 09:36:42 261
原创 序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树。根据树的前序遍历序列和中序遍历序列可以唯一的构造出一棵二叉树。受此启发,我们可以先把一棵二叉树序列化成一个前序遍历序列和中序遍历序列,然后在反序列化时通过这两个序列重构出原二叉树。这种思路有两个缺点:一是该方法要求二叉树中不能有重复的节点,二是只有当两个序列中的所有数据都读出后才能开始反序列化。如果两个遍历序列的数据是从一个流里读...
2018-09-08 21:09:58 790
原创 连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...
2018-09-05 23:06:04 20375 5
原创 对称的二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。例如,在下图所示的三棵二叉树中,第一棵二叉树是对称的,而另外两棵不是。我们通常有3种不同的二叉树遍历算法,即前序遍历、中序遍历和后序遍历。在这三种遍历算法中,都是先遍历左子结点再遍历右子结点。那么我们是否可以定义一种遍历算法,先遍历右子结点再遍历左子结点?比如我们针...
2018-09-02 17:56:02 357
原创 二叉树的镜像
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义: 源二叉树 镜像二叉树 8 8 / \ / \ 6 10 10 6 / \...
2018-09-02 16:25:15 709
原创 两个链表的第一个公共节点
问题描述输入两个链表,找出它们的第一个公共结点。含有公共节点的两个链表的结构类似于下图中的链表:可以看到两个链表中有一个公共节点,其中橙色的节点就是这两个链表的公共节点。 看到这个题目,容易想到的方法是使用蛮力法解决:在第一个链表上顺序遍历每一个节点,每遍历到一个节点,就在第二个链表上顺序遍历每个节点。如果在第二个链表上有一个节点与第一个链表上的节点一样,则说明两个链表在这个...
2018-09-02 15:34:28 18437 13
原创 链表中环的入口节点
问题描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。有环链表类似于下图中的链表:可以看到该链表中有一个环,其中橙色的节点就是这个链表中环的入口节点。 解决这个问题可以分三步。(1)第一步是确定一个链表中是否包含环。我们可以用两个指针来解决这个问题。定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次走两步。如果走得快的指针追...
2018-09-02 13:44:11 5519 3
原创 判断链表是否有环?
题目描述有一个单向链表,链表当中有可能出现“环”,就像下图这样。如何用程序判断出这个链表是有环链表? 方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比较。如果发现新节点之前的所有节点当中存在相同节点ID,则说明该节点被遍历过两次,链表有环;如果之前的所有节点当中不存在相同的节点...
2018-09-02 11:03:52 1392
原创 Bitmap算法简介
Bitmap算法中文又叫做位图算法。那么什么是Bitmap算法呢?位图算法中的位图是内存中连续的二进制位(bit),用于对大量整形数据做去重和查询。举个例子,给定一块长度是10bit的内存空间,想要依次插入整形数据4,2,1,3。我们需要怎么做呢?1. 给定长度是10的bitmap,每一个bit位分别对应着从0到9的10个整型数。此时bitmap的所有位都是0。2. 把整型数4...
2018-09-01 23:23:16 15562 3
原创 BitSet的应用
1.BitSet介绍BitSet是用于存储二进制位和对二进制进行操作的Java数据结构,BitSet从jdk1.0开始就有了。它存储的是二进制位在BitSet中状态,根据对这些状态的判断,可以有很多应用。以前对数据的操作都是先把数据都是存储在内存中间的,现在可以通过设置BitSet的相应位达到存储数据信息的目的,极大的节省了内存空间。2.BitSet应用BitSet可以做的事情主要分为...
2018-09-01 22:32:28 3395 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人