自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。如下图。思路分析        首先需要明白二叉搜索树也是一种排序的数据结构,它的中序遍历就是一个不递减的顺序排列,所以如果要转换成一个排序好的双向链表,那么仅需要改变原来指向左子节点和右子节点的指针,让他们分别指向前节点和后节点即可:原先指向左子节点的指针调整为链表中指向前一...

2018-03-31 19:20:55 96

转载 如何测试一个网页登陆界面

如何测试一个网页登陆界面  具体需求: 有一个登陆页面, (假如上面有2个textbox, 一个提交按钮。 请针对这个页面设计30个以上的test case.)  此题的考察目的: 面试者是否熟悉各种测试方法,是否有丰富的Web测试经验, 是否了解Web开发,以及设计Test case的能力  这个题目还是相当有难度的, 一般的人很难把这个题目回答好。  首先,你要了解用户的需求,比如这个登录界面...

2018-03-30 17:18:46 310

转载 怎么做接口测试、概念及常用方法小结

怎么做接口测试、概念及常用方法小结  1.接口的概念从IT的角度出发,主要是子模块或者子系统间交互并相互作用的部分。从形式上来看各种应用程序的API(最著名的Windows 系统的API),硬件的驱动程序,数据库系统的访问接口,再到后来的Webservice接口,http rest接口。虽然接口的形式各有不同,但是从测试角度来说,需要测试的内容大致是相同的,功能,性能,安全。  我们常说的api就...

2018-03-30 17:16:36 4824

转载 Java数据库连接——JDBC基础知识(操作数据库:增删改查)

转载自:https://www.cnblogs.com/Qian123/p/5339164.html#_label4阅读目录一、JDBC简介二、JDBC使用详解1、打通数据库2、搭建模型层3、搭建模型层——CRUD操作4、搭建控制层5、搭建视图层三、JDBC总结一、JDBC简介JDBC是连接java应用程序和数据库之间的桥梁。什么是JDBC?Java语言访问数据库的一种规范,是一套API。JDBC...

2018-03-30 11:49:09 1124

转载 Java中Runtime类

转载自:https://www.cnblogs.com/lixiaolun/p/4320754.html一、概述      Runtime类封装了运行时的环境。每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。      一般不能实例化一个Runtime对象,应用程序也不能创建自己的 Runtime 类实例,但可以通过 getRuntime 方法获取当前...

2018-03-30 11:25:06 3882

原创 频繁项集挖掘算法——H-mine算法

       前面我们已经介绍了4种频繁项集挖掘算法,有经典的,也有比较新提出的,现在我们再来学习一种比较新的频繁项集挖掘算法——H-mine算法。         前面已经提到FP-growth 将挖掘长频繁模式的问题转换为递归地搜索较短模式,然后连接后缀。该算法使用最不频繁的项作为后缀,提供了较好的选择性,使用该算法大大的降低了搜索开销。但是当数据量非常大时,构造基于内存的FP 树是非常困难的...

2018-03-29 17:20:34 3984 1

原创 频繁项集挖掘算法——Relim算法

        前面我们已经介绍了3中频繁项集挖掘算法,今天我们来介绍一种新的不需要候选项集的频繁项集挖掘算法——Relim算法。        FP-growth算法是当前挖掘频繁项集算法中速度最快,应用最广,并且不需要候选项集的一种频繁项集挖掘算法,但是FP-growth也存在着算法结构复杂和空间利用率低等缺点。Relim算法是在FP-growth算法的基础上提出的一种新的不需要候选项集的频繁...

2018-03-29 10:22:56 6665 2

原创 复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。思路分析        方法1:        复制原始链表上的每一个结点,并通过pNext连接起来;然后再设置每个结点的pSibling指针。        假设原始链表中某...

2018-03-29 09:50:31 119

原创 频繁项集挖掘算法——Eclat算法

        前面介绍过的Apriori算法和FP-growth算法都是从TID项集格式(即{TID:itemset})的事务集中挖掘频繁模式,其中TID是事务标识符,而itemset是事务TID中购买的商品。这种数据格式称为水平数据格式。或者,数据也可以用项-TID集格式(即{item:TID_set})表示,其中item是项的名称,而TIDb_set是包含item的事务的标识符集合。这种格式...

2018-03-28 19:22:45 15731

原创 频繁项集挖掘算法——FP-growth算法

        上一篇我们介绍了Apriori算法,但是我们可以分析得出,Apriori算法可能收到两种非平凡开销的影响:它可能需要产生大量候选项集;它可能需要重复的扫描整个数据库,通过模式匹配检查一个很大的候选集合。检查数据库中每个事务来确定候选项集支持度的开销很大。        是否可以设计一种方法,挖掘全部频繁项集而无须这种代价昂贵的候选产生过程?一种试图这样做的方法称为频繁模式增长(Fr...

2018-03-28 14:42:33 16044

原创 频繁项集挖掘算法——Apriori算法

前言        关联规则就是在给定训练项集上频繁出现的项集与项集之间的一种紧密的联系。其中“频繁”是由人为设定的一个阈值即支持度 (support)来衡量,“紧密”也是由人为设定的一个关联阈值即置信度(confidence)来衡量的。这两种度量标准是频繁项集挖掘中两个至关重 要的因素,也是挖掘算法的关键所在。对项集支持度和规则置信度的计算是影响挖掘算法效率的决定性因素,也是对频繁项集挖掘进行改...

2018-03-28 13:42:38 25356 3

原创 二叉树中和为某一值的路径

题目描述输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路分析        如下图,输入二叉树和整数22,则打印出两条路径,第一条路径包含结点10,12,第二条路径包含的结点为10,5,7。        以图中的二叉树为例分析,由于路径是从根节点出发到叶结点,也就是说路径是以根节点为起始点,因此i我们...

2018-03-27 20:48:55 150

原创 二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。思路分析        首先我们需要知道什么是二叉搜索树?二叉搜索树,是一种特殊的二叉树,其每一个父节点的值都大于等于左孩子节点,且小于等于右孩子节点。具体有关二叉搜索树的理解以及各种操作。        我们以两个数组为例来分析这道题目。   ...

2018-03-26 14:57:36 208

原创 Implement strStr()

题目Implement strStr().Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.Example 1:Input: haystack = "hello", needle = "ll"Output: 2Example 2:Inpu...

2018-03-25 20:35:50 129

原创 从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。思路分析        这道题实际上考察的就是二叉树的层次遍历。以下图(来自《剑指offer》)为例进行分析:        因为按层打印的顺序决定应该先打印根结点,所以我们从树的根结点开始分析。为了接下来能够打印值为9的结点的两个子结点,我们应该在遍历到该结点的时候把值为6和10的两个结点保存到一个容器里,现在容器内就有两个结点了。按...

2018-03-25 16:17:28 654

原创 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)思路分析        解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数字...

2018-03-25 14:46:36 160

原创 包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。题目分析        看到这个问题,第一反应可能是每次压入一个新元素进栈时,将栈里所有的元素排序,让最小元素位于栈顶,这样就能在O(1)时间得到最小元素。但是这种思路不能保证最后压入栈的元素能够最先出栈,此时的结构已经不是栈了。        我们接着想到...

2018-03-25 11:57:19 168

原创 一些用批处理命令批量处理文件夹或文件的功能实现

笔者之前做实验,需要批量处理大量的文件夹或者文件,写了一些批处理的脚本,在这里记录分享一下:1.将文件夹名中某个字符替换为另一字符@echo off::设置待替换的字符set r1=0::设置替换后的字符set r2=1setlocal enabledelayedexpansionfor /f "delims=" %%a in ('dir/ad/b') do (set y=%%ar...

2018-03-25 11:05:48 5213

原创 顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1    2   3    4 5    6   7    8 9  10  11  12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题目思路        当我们遇到一个复杂问题的时候,可以用图形来帮助我们思考。由于是以从外圈...

2018-03-24 14:21:29 268 1

原创 二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5思路分析    ...

2018-03-24 11:42:10 111

原创 树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)思路分析        要查找树A中是否存在树B可以分成两步:第一步在树A中找到和B的根节点的值一样的结点R,第二步再判断以树A中以R为根结点的子树是不是包含和树B一样的结构。         第一步在树A中查找与根节点的值一样的点,实际上就是树的遍历,由于递归的代码比较简单,我们采用递归的方式遍历。...

2018-03-23 13:47:43 117

原创 反转链表

题目描述输入一个链表,输出该链表中倒数第k个结点。思路分析:       为了反转一个链表,需要调整链表中指针的方向。为了将调整指针这个复杂的过程分析清楚,我们可以接触图形来直观分析。如下图(取自《剑指offer》插图),h、i、j是3个相邻的结点。假设经过若干操作,我们已经把结点h之前的指针调整完毕,这些结点的next都指向前面的一个结点,接下来,我们把i的next指向h,此时链表结构如下图b所...

2018-03-23 11:07:47 133

原创 深入理解Java虚拟机—学习笔记(1)Java内存区域与内存溢出异常

Java内存区域与内存溢出异常1、Java虚拟机所管理的内存包括以下几个运行时数据区域:        程序计数器,Java虚拟机栈,本地方法栈,Java堆,方法区。程序计数器        程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变程序计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线...

2018-03-22 21:34:07 182

原创 Linked List Cycle II

题目描述:Given a linked list, return the node where the cycle begins. If there is no cycle, return null.Note: Do not modify the linked list.Follow up:Can you solve it without using extra space?题目分析:      ...

2018-03-22 18:08:37 158

原创 Linked List Cycle

题目描述:Given a linked list, determine if it has a cycle in it.Follow up:Can you solve it without using extra space?题目分析:        定义两个指针,同时从链表头结点出发,一个指针一次走一步,一个指针一次走两步。如果走的快的指针套圈了走得慢的指针,那么链表是环形表,如果走得快的指针走...

2018-03-22 17:13:54 117

原创 链表倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾结点是倒数第1个结点。例如,一个链表有6个结点,从头结点开始他们的值依次是1、2、3、4、5、6,则倒数第3个结点是4。链表结点定义如下:/*public class ListNode { int val; ListNode next = null; ListNode...

2018-03-21 13:42:16 165

原创 快速排序及Java实现

1.排序思路快速排序是由冒泡排序改进而得,它的基本思想是:在待排序的n个元素中,任取一个元素(通常第一个)作为基准,把该元素放入适当位置后,数据序列被此元素划分为两个部分,把关键字小于该元素的元素放在前一部分,把关键字大于该元素的元素放在后一部分,并把该元素排在这两部分中间(称为该元素归位),这个过程叫做一趟快速排序。之后对两个子部分用递归的方法继续划分。具体做法(以第一个元素为基准为例)...

2018-03-20 21:02:53 199

原创 冒泡排序及实现

1.排序思路        冒泡排序也称起泡排序,是一种典型的交换排序的方法,其基本思想是:通过无序区中的相邻元素关键字的比较和位置的交换,使得关键字最小的元素如气泡一般逐渐“上浮”直至“水面”。整个算法是从最下面的元素开始,对每两个相邻的关键字进行比较,并且让关键字较小的元素换至关键字较大的元素之上,使得经过一趟冒泡排序之后,关键字最小的元素到达最上端。接着,再在剩下的元素中找关键字次小的元素,...

2018-03-20 19:41:24 255

原创 直接插入排序及Java实现

1.排序思路:    假设待排序的元素存放在数组R[0..n-1]中,排序过程中的某一时刻,R被分成两个子区间R[0..i-1]和R[i..n-1](刚开始时,i=1,有序区只有R[0]一个元素),其中,前一个子区间是有序区,后一个子区间是无序区。直接插入排序的一趟操作是将当前无序区的第一个元素插入到有序R[0..i-1]区中合适的位置上,是的R[0..i]变为新的有序区。2.Java实现publ...

2018-03-20 19:23:22 240

原创 调整数组顺序使奇数位于偶数前面

题目描述题目一:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分。题目二:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路分析            针对题目一,不要求调整后的数组奇数和偶数的相对位...

2018-03-20 17:36:09 167

原创 在O(1)时间删除链表结点

题目:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间删除该节点。思路:        在单向链表中删除一个结点,最常规的做法是从链表头结点开始,顺序遍历查找要删除的结点的前一个结点,然后把要删除的结点的next赋给要删除的结点的前一个结点的next即可完成。但是这种思路由于要顺序查找,时间复杂度为O(n)。        那是否一定需要得到被删除的结点的前一个结点呢?当然不是!我们...

2018-03-20 14:42:52 294

原创 Java中的Arrays.fill()和Arrays.copyOfRange()方法

java.util.Arrays.fill(int[] a, int val) 分配方法指定的int值给指定的int型数组的每个元素。声明以下是java.util.Arrays.fill()方法的声明public static void fill(int[] a, int val)参数a -- 这是要填充的数组。val -- 这是要被存储在该数组中的所有元素的值。java.util.Arrays....

2018-03-20 11:42:25 585

原创 数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。题目分析        这道题目看似简单,很多人都可以在30秒就写出传统的代码,如下:public double powerWithExponent(double base,int exponent){ double result = 1.0; ...

2018-03-19 11:03:43 126

原创 归并排序及Java实现

1、基本思想:        归并排序就是利用归并的思想实现的排序方法。而且充分利用了完全二叉树的深度是log2n+1描述的特性,因此效率比较高。其基本原理如下:对于给定的一组记录,利用递归与分治技术将数据序列划分成为越来越小的半子表,在对半子表排序,最后再用递归方法将排好序的半子表合并成为越来越大的有序序列。 2、复杂度分析一趟归并需要将数组 a[]中相邻的长度为h的有序序列进行两两归并.并将结...

2018-03-18 13:19:15 272

原创 Java构建二叉树

Java构建二叉树二叉树节点类定义:public class Node{ int data; Node leftChild; Node rightChild; //构造方法 Node(int data){ this.data = data; leftChild = null; rightChild =...

2018-03-16 14:03:04 4261

原创 堆排序及其Java实现

1.堆的定义:一个完全二叉树中,任意父结点总是大于或等于(小于或等于)任何一个子节点,则为大根堆(小根堆)。2.堆的存储:完全二叉树适合采用顺序存储的方式,因此一个数组可以看成一个完全二叉树。用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2;其左右子结点分别为 (2i + 1)、(2i + 2)。编号特点:从一个结点的编号就可推得其双亲,左、右孩子,兄弟等结点的编号。假设编号为i的结...

2018-03-16 13:53:06 288

原创 二进制中1的个数

题目:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。思路:        看到问题我们可以很快形成一个基本思路:先判断整数二进制表示中的最右边1位是不是1,接着把输入的整数右移一位,此时原来处于从右边数起的第二位移到最右边了,再判断是不是1。这样每次移动一位,直到整数变为0为止。现在题目变成如何判断一个整数最右边是不是1了:只要把整数和1做位与运算,如果结果为1则表示该整数最右边...

2018-03-14 13:25:05 165

原创 斐波那契数列

题目描述:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。n<=39思路分析:    这道题目对大家来说应该都不陌生,第一种能想到的解决方案就是用递归实现。但是用递归实现的方法,会需要多次计算重复的数值,而且随着n的增大而急剧增加。改进递归方法的很简单,我们只要想办法避免重复计算就可以了,最简单的办法是从下往上计算,首先根据Ff(0)和f(1)计算得到f(2),...

2018-03-14 10:41:37 208

转载 Java单例模式(Singleton)以及实现

转载自:http://www.cnblogs.com/cielosun/p/6582333.html一. 什么是单例模式因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计。二. 单例模式的特点1. 单例模式只能有一个实例。2. 单例类必须创建自己的唯一实例。3. 单例类必须向其他对象提供这一实例。三. 单例模式VS静态类在知道了什么是单例模式后,我...

2018-03-13 20:03:28 187

原创 Java复习基础知识杂记(持续更新中……)

最近在复习Java基础知识,一些笔记记录在这里,与大家分享~Java 数组声明与初始化数组声明       对于数组的声明推荐写法是使用 数据类型 + [] + 数组名称的方式,因为这种方式可以很清楚的标明这是某一种类型的数组。例如,声明一个整数类型数组int[] a;数组初始化      数组初始化分为三种方式。        第一种:特殊初始化,不用new关键字完成,在数组声明的同时完成初始化...

2018-03-13 13:51:50 156

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除