- 博客(69)
- 资源 (8)
- 收藏
- 关注
原创 【数据结构与算法】重建二叉树
只能根据前序中序或者中序后序重建二叉树,不可能根据前序和后序重建,因为需要中序去划分左右子树。代码实现/** * 源码名称:ConstructBT.java * 日期:2014-09-05 * 程序功能:重建二叉树(前序中序) * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class ConstructBT { class
2014-09-05 11:35:39
1144
原创 【数据结构与算法】java链表操作
链表操作代码量少但是比较容易出错,是比较适合面试的地方。代码实现/** * 源码名称:MyLinkList.java * 日期:2014-09-05 * 程序功能:java链表操作 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */import java.util.Stack;public class MyLinkList { cla
2014-09-05 09:53:07
953
原创 【数据结构与算法】字符串匹配KMP算法
首先需要了解一下BF暴力匹配算法,这个算法为每一个串设置一个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针回到开始后移之前的位置的下一位,模式串指针回到最开始。对比一下KMP算法,同样是设置两个指针,然后两个指针同时后移,出现不匹配的情况后,主串指针不变,模式串指针回溯一定的距离。具体模式串指针回溯多少,是第一次看KMP算法的人比较难以理解的,其实仔细想想,模式串的前缀和后缀其实也是
2014-09-03 10:19:48
1157
原创 【数据结构与算法】LCS(连续)
今年阿里的笔试题,就有一道是求连续的公共子串。思路一:我当时第一反应是把其中较短的一个串的所有子串的都求出来,然后用这些子串(先用长度较长的)去长串里面做匹配。后来一想效率太低了。思路二:效仿不连续的LCS问题,先把表填了,然后再在表里面找。代码实现/** * 源码名称:LCString.java * 日期:2014-09-02 * 程序功能:LCS(连续) *
2014-09-03 08:55:58
1148
原创 【数据结构与算法】LCS(不连续)
这个问题很经典,典型的动态规划,动态规划就是填一个表,然后遍历一下就行了。代码实现/** * 源码名称:LCSequence.java * 日期:2014-09-02 * 程序功能:LCS(不连续) * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class LCSequence { private String mOn
2014-09-02 17:02:36
1275
原创 【数据结构与算法】图的深度与广度遍历
图的深度遍历与广度遍历与二叉树的遍历类似,但是因为是图,需要有个数组存一下点是否被遍历过。代码实现/** * 源码名称:GraphIterateMatrix.java * 日期:2014-08-25 * 程序功能:图的深度与广度遍历 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */import java.util.LinkedList;
2014-08-25 17:15:50
1599
原创 【数据结构与算法】二叉树广度遍历
二叉树的广度遍历想想还是比较简单的,利用队列存储当前结点的左儿子和右儿子用作未来的访问。代码实现/** * 源码名称:TreeBFS.java * 日期:2014-08-25 * 程序功能:二叉树广度遍历 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */import java.util.LinkedList;import java.u
2014-08-25 11:11:44
1115
原创 【数据结构与算法】二叉树深度遍历(非递归)
据说这个笔试面试的时候很容易考到,所以写到这里。图示代码实现/** * 源码名称:TreeIteratorNoRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历(非递归) * 版权:CopyRight@A2BGeek * 作者:A2BGeek */import java.util.Stack;public
2014-08-23 22:55:42
1389
原创 【数据结构与算法】二叉树深度遍历(递归)
二叉树的深度遍历用递归的话就没有什么好说的了。代码实现/** * 源码名称:TreeIteratorRecursion.java * 日期:2014-08-23 * 程序功能:二叉树深度遍历 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class TreeIteratorRecursion { class TreeN
2014-08-23 16:06:03
1499
原创 【数据结构与算法】二分查找
基本思想首先将给定的值K与表中中间位置元素比较,若相等,则查找成功;若不等,则所需查找的元素只能在中间数据以外的前半部分或者后半部分,缩小范围后继续进行同样的查找,如此反复,直到找到为止。代码实现/** * 源码名称:BinarySearch.java * 日期:2014-08-14 * 程序功能:二分查找 * 版权:CopyRight@A2BGeek * 作者:A
2014-08-14 10:51:11
1122
原创 【数据结构与算法】顺序查找
基本思想顺序查找是最简单的查找方法,从线性表的一端开始,依次将每个记录的关键字与给定值进行比较。代码实现/** * 源码名称:SeqSearch.java * 日期:2014-08-13 * 程序功能:顺序查找 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class SeqSearch { public stati
2014-08-13 16:37:34
1407
原创 【数据结构与算法】二路归并排序
二路归并排序的时间复杂度是O(n*log2n),空间复杂度是O(n)。代码如下:/** * 源码名称:MergeSort.java * 日期:2014-08-11 * 程序功能:合并排序 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class MergeSort { public void mergeSort(int[]
2014-08-11 17:00:39
1568
原创 【数据结构与算法】希尔排序
希尔排序的时间复杂度是O(n^1.3)~O(n^2),空间复杂度是O(1)。代码如下:/** * 源码名称: ShellSort.java * 日期:2014-08-11 * 程序功能:希尔排序 * 版权:CopyRight@A2BGeek * 作者:A2BGeek */public class ShellSort { public void shellSort(i
2014-08-11 11:29:06
987
原创 【数据结构与算法】直接插入排序
直接插入排序的时间复杂度的O(N^2),空间复杂度是O(1)。下面是代码:public class InsertionSort { public void insertionSort(int[] in) { int length = in.length; int i, j; for (i = 1; i < length; i++) { int tmp = in[i];
2014-08-11 10:53:55
1132
原创 【数据结构与算法】堆排序
堆排序的时间复杂度是O(nlogn),下面上代码public class HeapSort { public void adjustHeap(int[] in, int index, int length) { int leftcIndex = index * 2 + 1; int rightcIndex = index * 2 + 2; int bigest = index;
2014-08-08 15:31:01
973
原创 【leetcode系列】Valid Parentheses
很经典的问题,使用栈来解决,我这里自己实现了一个栈,当然也可以直接用java自带的Stack类。自己实现的栈代码:import java.util.LinkedList;class StackOne { LinkedList data; int top; int maxSize; StackOne(int size) { // TODO Auto-generated co
2014-08-07 17:30:26
899
原创 【leetcode系列】3Sum
这个题我最开始的思路是:先一个数定下来,然后在除这个数之外的集合里面找另外两个数,最后计算和。如此反复,对于N个数,需要进行N-2次循环。我遇到的问题就是怎么找另外两个数,其实我想过参照Two Sum里面的解法,就是用Hashtable存,键值对的结构是>,但是构造这个Hashtable就需要O(N^2),后面真正解的时候有需要O(N^2)。参考了大牛的解法后,明白了找两个数还是用两个下标
2014-08-07 10:34:13
928
原创 【数据结构与算法】选择排序
选择排序没什么好说的,直接上代码吧public class SelectSort { public void selectSort(int[] in) { int inLength = in.length; int minIndex = 0; for (int i = 0; i < inLength; i++) { minIndex = i; for (int j =
2014-08-06 21:36:21
865
原创 【数据结构与算法】快速排序
快速排序在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试,包括像腾讯,微软等知名IT公司都喜欢考这个。这里对快速排序的原理就不详细叙述了,这篇博客讲的非常好,点击打开链接。以下是代码:public class QuickSort { public void quickSort(int[] in,
2014-08-06 15:10:14
986
原创 【leetcode系列】String to Integer (atoi)
这个我就直接上代码了,最开始把“abc123“也算作合法的了,后来查了一下atoi的定义,把这种去掉了。public class Solution { public static int atoi(String inStr) { long result = 0L; /* * 网上查了一下,atoi函数的定义是如果第一个非空格字符存在,是数字或者正负号则开始做类型转换, *
2014-08-06 09:05:58
1031
原创 【微信易信公众平台开发】天气查询功能
我的个人博客站点已经开通,会有技术分享和其他一些有意思的东西,希望读者能去访问一下,网址是http://a2bgeek.me好久不更新了,今天为大家带来天气查询功能的开发。大家可以关注一下我的易信公众账号——A2BGeek's XX天气的查询我还真没找到神马好用的API,唯一找到的一个http://smart.weather.com.cn/wzfw/smart/weatherapi
2014-04-12 10:44:27
1667
原创 BeautifulSoup实战
最近我的博客主要都在自己的网站上写,所以在优快云上很少更新,希望各位读者光临我的站点http://a2bgeek.me最近有个项目要用天气数据,看了一些天气网站,决定从中国天气网上抓数据,python抓数据的框架我知道的不多,只听过BeautifulSoup,下面记录一下使用BeautifulSoup抓取数据的全过程。BeautifulSoup的文档见BeautifulSoup官方文档。
2014-04-09 10:33:41
3204
转载 读懂diff
diff是Unix系统的一个很重要的工具程序。它用来比较两个文本文件的差异,是代码版本管理的基石之一。你在命令行下,输入: $ diff diff就会告诉你,这两个文件有何差异。它的显示结果不太好懂,下面我就来说明,如何读懂diff。一、diff的三种格式由于历史原因,diff有三种格式: * 正常格式(normal diff) * 上下文格式(
2014-02-26 23:00:28
839
转载 linux tail命令
tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容. 1.命令格式;tail[必要参数][选择参数][文件] 2.命令功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
2014-02-25 15:46:36
813
转载 Python发送GET和POST请求
在python中,模拟http客户端发送get和post请求,主要用httplib模块的功能。1、python发送GET请求我在本地建立一个测试环境,test.php的内容就是输出一句话:[php] view plaincopyecho 'Old friends and old wines are best.'; python发送get请求
2014-02-24 10:02:08
2283
原创 Python群发邮件
今天试了试Python发邮件,突然想到能不能群发邮件呢?群发邮件是smtplib的一个bug,不过最终还是解决了。直接上代码了# encoding: utf-8from email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipartimport smtplibmsg = MIMEMultip
2013-12-24 20:44:39
3422
2
转载 linux crontab命令
at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简介crond是linux下用来周期性的执行某
2013-12-24 14:48:13
1026
转载 linux chown命令
chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。 1.命令格式: chown [选项]... [所有者][:[组]] 文件... 2.命令功能: 通过chown
2013-12-23 21:29:52
1511
转载 linux chmod命令
chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。Linux系统中的每个文件和目录都有访问许可权限,用它来确定谁可以通过何种方式对文件和目录进行访问和操作。 文件或目录的访问权限分为只读,只写和可执行三种。以文件为例,只读权限表示只允许读其内容,而禁止对其做任何
2013-12-23 21:24:42
983
原创 【微信易信公众平台开发】创建自定义菜单
本系列文章均为A2BGeek原创,转载务必在明显处注明:转载自A2BGeek的【微信易信公众平台开发】系列,原文链接:http://blog.youkuaiyun.com/a2bgeek/article/details/17397157这篇博客来介绍微信易信自定义菜单的创建。概述自定义菜单是目前很多平台公众号的一个标配,比如微信、易信、支付宝手机客户端等,这个自定义菜单有什么优点呢?对
2013-12-18 19:14:43
6312
原创 【微信易信公众平台开发】开启开发者模式
我把微信/易信的公众号看成一个APP内的轻量级APP(此时可以把微信/易信看成是应用商店),为什么这么说呢?因为有很多日常生活需要的服务都能在公众号中得到,比如查询天气、查询快递、办理银行业务、办理手机业务等,再加上现在有了自定义菜单,俨然已经成为了一个APP,但是这种APP是有局限性的,其一是这种APP只是一个I/O型的APP,即用户输入然后得到一个输出;其二是交互方式比较单调,除了I/O就是跳
2013-12-14 10:48:40
7199
原创 【微信易信公众平台开发】写在最前面
微信和易信一样,都有公众平台,使用方法几乎一样,不过易信政策比较宽松,所以我选择了易信来写这个系列的博客,具体要做一个什么样子的例子还没有想清楚,不过先把久违的自定义菜单体验一下先。本系列的第一篇是讲解微信/易信开发者模式的开启,第二篇是讲解手机客户端上自定义菜单如何生成。第三篇。。。还没想好。
2013-12-10 10:26:12
2259
原创 【Android每周专题】网络编程
HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能:HttpURLConnection。 HttpURLConnection是java的标准类,HttpURLConnection继承自URLConnec
2013-12-08 15:11:14
2774
原创 解决红米(MTK)手机无法连接电脑进行开发调试的问题
双十一抢到了一台红米手机,说实话质量做工在799这个价位还是可以的,毕竟屌丝,只能买个便宜的手机玩玩。要使用红米作为开发机,需要两步:开启开发者选项进入“设置”选择“关于手机”,然后狂点“Android版本”(其实只要5次),话说这个操作步骤貌似是从Android4.0开始的,所有安装Android4.0及更高版本的手机都可以这样开启“开发者选项”,如图:修复adb无法
2013-11-25 19:39:12
14763
原创 【Android每周专题】Android中的逆向工程
apktool反编译工具的使用 1.先装JAVA环境,JDK/JRE都行,官网下载 装过的就跳过吧 2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip 3.解压apktool.jar到 C:\Windows ,解压apktool-instal
2013-11-16 15:10:28
4819
原创 Android飞行模式的打开与关闭
在Android4.2以前可以做到使用代码进行飞行模式的开关,步骤如下:1、首先需要在AndroidManifest.xml中加入权限:2、java代码中首先进行一个putString操作,然后发送一个广播,注意不发送广播是不会生效的:if (Settings.System.getString(mContentResolver, Settings.Syst
2013-11-07 17:10:16
5851
原创 【Android每周专题】横竖屏切换和Activity中View状态的保持
每周专题名不符实,实在是惭愧,前段时间有点忙,没有及时更新,自我反省一下。本周专题分为两个部分,第一部分是横竖屏切换的相关问题,第二部分是Activity中View状态的保持。横竖屏切换一、横竖屏切换时Activity的生命周期1、启动Activity(竖屏时启动的)11-01 01:48:17.144: I/a2bgeek(945): onCreate11-01 01:4
2013-11-05 09:39:49
5282
原创 Linux上MongoDB的安装与配置
长话短说,一共有两种方法。(我随便选了一个发行版Mint)一、apt-get方法官网上说的很清楚:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/1、更新软件源列表,加入mongo相关的东西:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.
2013-09-12 18:02:32
3857
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人