A2BGeek的专栏

强大源于自律

【数据结构与算法】重建二叉树

只能根据前序中序或者中序后序重建二叉树,不可能根据前序和后序重建,因为需要中序去划分左右子树。 代码实现 /** * 源码名称:ConstructBT.java * 日期:2014-09-05 * 程序功能:重建二叉树(前序中序) * 版权:CopyRight@A2BGeek ...

2014-09-05 11:35:39

阅读数 842

评论数 0

【数据结构与算法】java链表操作

链表操作代码量少但是比较容易出错,是比较适合面试的地方。 代码实现 /** * 源码名称:MyLinkList.java * 日期:2014-09-05 * 程序功能:java链表操作 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */ impo...

2014-09-05 09:53:07

阅读数 733

评论数 0

【数据结构与算法】字符串匹配KMP算法

首先需要了解一下BF暴力匹配算法,这个算法为每一个串设置一个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针回到开始后移之前的位置的下一位,模式串指针回到最开始。 对比一下KMP算法,同样是设置两个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针不变,模式串指针回溯一定的距离。具...

2014-09-03 10:19:48

阅读数 790

评论数 0

【数据结构与算法】LCS(连续)

今年阿里的笔试题,就有一道是求连续的公共子串。 思路一:我当时第一反应是把其中较短的一个串的所有子串的都求出来,然后用这些子串(先用长度较长的)去长串里面做匹配。后来一想效率太低了。 思路二:效仿不连续的LCS问题,先把表填了,然后再在表里面找。 代码实现 /** * 源码名称:LC...

2014-09-03 08:55:58

阅读数 753

评论数 0

【数据结构与算法】LCS(不连续)

这个问题很经典,典型的动态规划,动态规划就是填一个表,然后遍历一下就行了。 代码实现 /** * 源码名称:LCSequence.java * 日期:2014-09-02 * 程序功能:LCS(不连续) * 版权:CopyRight@A2BGeek * 作者:A2BGee...

2014-09-02 17:02:36

阅读数 887

评论数 0

【数据结构与算法】图的深度与广度遍历

图的深度遍历与广度遍历与二叉树的遍历类似,但是因为是图,需要有个数组存一下点是否被遍历过。 代码实现 /** * 源码名称:GraphIterateMatrix.java * 日期:2014-08-25 * 程序功能:图的深度与广度遍历 * 版权:CopyRight@A2BGe...

2014-08-25 17:15:50

阅读数 1262

评论数 0

【数据结构与算法】二叉树广度遍历

二叉树的广度遍历想想还是比较简单的,利用队列存储当前结点的左儿子和右儿子用作未来的访问。 代码实现 /** * 源码名称:TreeBFS.java * 日期:2014-08-25 * 程序功能:二叉树广度遍历 * 版权:CopyRight@A2BGeek * 作者:A2B...

2014-08-25 11:11:44

阅读数 843

评论数 1

【数据结构与算法】二叉树深度遍历(非递归)

据说这个笔试面试的时候很容易考到,所以写到这里。 图示 代码实现 /** * 源码名称:TreeIteratorNoRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历(非递归) * 版权:CopyRight@A2BGeek...

2014-08-23 22:55:42

阅读数 1101

评论数 0

【数据结构与算法】二叉树深度遍历(递归)

二叉树的深度遍历用递归的话就没有什么好说的了。 代码实现 /** * 源码名称:TreeIteratorRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历 * 版权:CopyRight@A2BGeek * 作者:A2BGeek *...

2014-08-23 16:06:03

阅读数 1000

评论数 0

【数据结构与算法】二分查找

基本思想 首先将给定的值K与表中中间位置元素比较,若相等,则查找成功;若不等,则所需查找的元素只能在中间数据以外的前半部分或者后半部分,缩小范围后继续进行同样的查找,如此反复,直到找到为止。 代码实现 /** * 源码名称:BinarySearch.java * 日期:2014-0...

2014-08-14 10:51:11

阅读数 918

评论数 0

【数据结构与算法】顺序查找

基本思想 顺序查找是最简单的查找方法,从线性表的一端开始,依次将每个记录的关键字与给定值进行比较。 代码实现 /** * 源码名称:SeqSearch.java * 日期:2014-08-13 * 程序功能:顺序查找 * 版权:CopyRight@A2BGeek * 作者...

2014-08-13 16:37:34

阅读数 891

评论数 0

【数据结构与算法】二路归并排序

二路归并排序的时间复杂度是O(n*log2n),空间复杂度是O(n)。 代码如下: /** * 源码名称:MergeSort.java * 日期:2014-08-11 * 程序功能:合并排序 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */ publ...

2014-08-11 17:00:39

阅读数 819

评论数 0

【数据结构与算法】希尔排序

希尔排序的时间复杂度是O(n^1.3)~O(n^2),空间复杂度是O(1)。 代码如下: /** * 源码名称: ShellSort.java * 日期:2014-08-11 * 程序功能:希尔排序 * 版权:CopyRight@A2BGeek * 作者:A2BGeek *...

2014-08-11 11:29:06

阅读数 801

评论数 0

【数据结构与算法】直接插入排序

直接插入排序的时间复杂度的O(N^2),空间复杂度是O(1)。 下面是代码: public class InsertionSort { public void insertionSort(int[] in) { int length = in.length; int i, j; fo...

2014-08-11 10:53:55

阅读数 854

评论数 0

【数据结构与算法】堆排序

堆排序的时间复杂度是O(nlogn),下面上代码 public class HeapSort { public void adjustHeap(int[] in, int index, int length) { int leftcIndex = index * 2 + 1; int ...

2014-08-08 15:31:01

阅读数 703

评论数 0

【leetcode系列】Valid Parentheses

很经典的问题,使用栈来解决,我这里自己实现了一个栈,当然也可以直接用java自带的Stack类。 自己实现的栈代码: import java.util.LinkedList; class StackOne { LinkedList data; int top; int maxSize;...

2014-08-07 17:30:26

阅读数 720

评论数 0

【leetcode系列】3Sum

这个题我最开始的思路是:先一个数定下来,然后在除这个数之外的集合里面找另外两个数,最后计算和。如此反复,对于N个数,需要进行N-2次循环。 我遇到的问题就是怎么找另外两个数,其实我想过参照Two Sum里面的解法,就是用Hashtable存,键值对的结构是>,但是构造这个Hashtable...

2014-08-07 10:34:13

阅读数 712

评论数 0

【数据结构与算法】选择排序

选择排序没什么好说的,直接上代码吧 public class SelectSort { public void selectSort(int[] in) { int inLength = in.length; int minIndex = 0; for (int i = 0; i ...

2014-08-06 21:36:21

阅读数 580

评论数 0

【数据结构与算法】快速排序

快速排序在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个。 这里对快速排序的原理就不详细叙述了,这篇博客讲的非常好,点击打开链接。 以下是代码: public cla...

2014-08-06 15:10:14

阅读数 802

评论数 0

【数据结构与算法】冒泡排序

排序算法是一种基本、常用的算法。怕

2014-08-06 10:03:09

阅读数 680

评论数 0

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