自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从二叉搜索树的第k个节点问题看递归如何返回普通变量和对象

在剑指offer有个求“二叉搜索树的第k个节点(从小到大)”问题。利用BST的性质,直接递归中序遍历即可。但是得到的结果总是null。例图如下:           原来的代码如下:public class Test { TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot==null || k<=0)

2017-08-31 22:48:36 390

原创 由反序列化二叉树实现函数引起的二叉树节点递归调用问题

在刷剑指offer中遇到一个反序列化二叉树问题,将给定的二叉树前序遍历字符串(节点之间用“,”分割,空节点我用的“#”)。代码用递归很容易实现,由于递归中不保存int型数据,为了给字符串遍历计数,用了一个只有一个元素的数组(目前没有想到更好的方法,返回值其他值已被预订)   实现方法如下:public class Demo { TreeNode Deserialize(String

2017-08-31 17:02:57 356

原创 动态规划问题探究及其Java实现

问题引入:     某公司出售的长为i的钢条的价格为p(i)(单位为元),如下表所示。如果有一段长为n的钢条,求如何切割才能使收益最大?                                测试的最优方案:

2017-08-25 10:02:45 2880

原创 快速排序Java实现

public class Quicksort { private void quicksort(int[] array, int left, int right) { if(left>=right) return; int base=quickswap(array,left,right);//以基点为准,左侧大于基点,右侧小于基点 quicksort(array,l

2017-08-23 13:24:50 293

转载 成为Java顶尖程序员 ,看这11本书就够了

学习的最好途径就是看书"学习的最好途径就是看书",这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处:1、能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料2、对着书上的代码自己敲的时候方便"看完书之后再次提升自我的最好途径是看一些相关的好博文",我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是

2017-08-10 21:23:34 259

原创 有序数组找到出现次数最高的元素和次数

算法不难,就是用个变量分别存储已经遍历到的元素中,出现次数最多的元素和次数。在遍历过程中统计目前遍历的元素的次数,在遍历到的元素变化时,把上个元素次数和之前存储的最大次数比较,保留最大的次数和对应的元素。注意最后一个元素需要单独比较。本算法只针对已经排序好的数组。Java实现如下:public class TestAndDel { static void findmost(int[]

2017-08-10 19:38:38 2371 1

原创 抓取HTML页面表格中的某一列数据

今天需要抓取的内容在HTML页面中存在,但是需要的只是表格中的某一列数据,而且在页面中存在多个table。这里采用采用逐层抓取的方法。正则表达式用的6的就不用往下看了。需要获取的的table的某一行数据如下所示:这里需要抓取的是时间下面的“1179”。关键的地方就是先找到需要的table,再获取table的所有行,然后在每一行找到需要的列。实现如下所示: private static vo

2017-08-10 15:07:14 10432

原创 利用页面分析获取json数据

今天项目需要抓取车次信息,开始用jsoup访问制定的url,发现返回的只是静态页面,没有查询的数据。原来网站为了防止别人爬取数据,采用ajax异步加载数据。网上搜到的API接口要收费,后来发现可以页面分析找到数据真正的提交地址。这里以在某网站,查询济南到上海8月13号的火车信息为例说明。在某网站按F12,查询,可以抓取很多信息。点XHR看到很多get和post信息。从第一个开始找(如果

2017-08-09 12:40:24 2057

原创 Java语言汉语转换为拼音

最近做东西需要将汉语转换为拼音,在网上正好有开源的包可以实现,下载地址:http://pinyin4j.sourceforge.net/。Mark一下,以后可能用得到,示例代码如下:   import net.sourceforge.pinyin4j.PinyinHelper;import net.sourceforge.pinyin4j.format.HanyuPinyinCaseType

2017-08-07 21:44:03 414

原创 归并排序算法Java实现

一、基本思想      归并算法采用分治思想,将数组的依次从中间拆分为两组,直到每个组只有一个元素位置。然后对拆分好的两组数进行归并,具体方法是:在左右两组都已经有序的前提下(只有一个数是一种特殊的有序),重建一个大小是左右两组数大小和的临时数组,然后对左右两个数组同时从前往后选最小的数放入新数组中。注意,如果如果一组元素放完了,另外一组剩余,这时无须比较,将剩余的元素直接放入临时数组。还有,

2017-05-15 15:24:20 457

原创 排序算法之插入排序

插入排序的基本思想是:对一个数组,从第二个元素起,每次将一个元素插入到前面已经排序的序列中。常见的插入排序法有:直接插入排序,二分法插入排序和希尔排序。这里简要介绍下希尔排序。希尔排序基本思想是分组的直接插入排序。分组的元素个数(叫增量)这里采用减半增量,即第一趟排序每组个数为数组长度一半,第二次减半,直到最后为1.注意每组元素间隔增量的是一组。为便于理解,可以认为将全部元素排成行列式(类似于

2017-04-08 15:25:23 670

转载 如何在局域网访问Tomcat项目

1 前言  有时候因为工作需要,我们需要访问服务器上的项目或是把你的机器上的项目让你的同事访问到,诸如此类的,都涉及到了这个课题:如何在局域网访问Tomcat项目?而tomcat本身是支持局域网内共享的,只需简单配置防火墙规则即可,下面以windows为例,简单讲解该如何配置。2 Windows XP配置  Step 1,打开控制面板,进入windows防火墙;  

2016-12-17 10:40:38 830

原创 MySQL批处理sql文件时data too long for column问题

将sql文件导入数据库,发现只得到一个空表,并且显示data too long for column for XXXX,网上查了一下是控制台和数据库使用编码的问题,将他们都改为utf8编码就可以。不知道具体什么原因,时间有限不能深究了,Mark一下,以后再做研究。改动后代码段如下:

2016-12-03 10:54:14 777

转载 ip地址 子网掩码 默认网关

IP地址、子网掩码、网关的关系?        子网掩码是每个网管必须要掌握的基础知识,只有掌握它,才能够真正理解TCP/IP协议的设置。以下我们就来深入浅出地讲解什么是子网掩码。IP地址的结构:要想理解什么是子网掩码,就不能不了解IP地址的构成。互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都

2016-11-19 10:50:18 1160

转载 MyEclipse 2016 反编译插件安装

分享一下下载插件的地址,百度网盘:链接:http://pan.baidu.com/s/1nturiAH 密码:yk73其次:我来说下具体操作步骤:1、把net.sf.jadclipse_3.3.0.jar拷到D:\Program Files\MyEclipse 2015\plugins 目录下. ( 这里是我的目录,写你自己的eclips

2016-11-12 21:23:51 2148

转载 BP神经网络原理

一,什么是BP"BP(Back Propagation)网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和

2016-11-07 16:33:00 2742

原创 搜索二叉树(BST)的实现

搜索二叉树之一种特殊的二叉树,其右子树值大于根节点,根节点值大于左子树。因此,BST的插入、删除都要维持二叉树的这一特性。利用这一特性也使BST的元素查找效率提高,同时,本代码也实现了BST的递归遍历和非递归遍历。代码如下:import java.util.ArrayDeque;

2016-10-10 19:13:41 456

原创 合并两个输入的字符串按降序输出

这个问题本身比较简单,有多种实现方法,这里用Java集合实现。只需,将输入的两个字符串合并,然后放到TreeSet集合即可。但是TressSet默认是升序排列,所以这里需要定制排序,TreeSet的一个构造方法需要comparator接口,所以可以用Lambda表达式替代。此时可以算基本完成任务了,但是这里多做一点,将排序好的字符放进一个字符串中。集合从Iterable继承的的foreach方法需

2016-10-07 09:53:35 1363

原创 找到含有n个不同字符的子串的最大长度

要求先输入字符串,再输入n的值,输出结果为:含有n个不同字符的子串的最大长度。      处理方法:从字符串第一个字符开始,依次取大于等于的子串,得到含有n个字符的子串,如果新的子串长度大于maxSubStr,则更新maxSubStr。程序中需要防止字符标号溢出异常和字符标号越界(n的值大于字符串长度)异常。代码如下:import java.util.Scanner;public cla

2016-10-05 20:35:37 1651

原创 Java 对象的比较

今天代码用到对象的比较,当时用的两个Object类型的变量a和b,然后if(a>b),直接编译错误:The operator > is undefined for the argument type(s) java.lang.Object, java.lang.Object。原来算术运算符只能用于基本的数据类型,引用类型包括Integer和Float都不能用该操作符。这时有两种处理方法:

2016-10-02 21:12:44 423

转载 comparator接口与Comparable接口的区别

文章来源:http://www.cnblogs.com/sunflower627/p/3158042.html1. Comparator 和 Comparable 相同的地方他们都是java的一个接口, 并且是用来对自定义的class比较大小的,什么是自定义class: 如 public class Person{ String name; int age }.当我们有这么

2016-10-02 10:34:56 231

原创 查找字符串中重复的子串,并输出重复的次数

思路如下:对一个字符串,从第一个字符开始,检查前两个字符组成的字符串,是否被它后面的子串包含。如果没有包含,则从第二个字符开始同样的方法检查;如果包含则统计包含数量。方法是:被检查的子串根据重复串下标削去重复的部分多次检查得到重复次数,最后将重复串和次数放入hashtable。然后针对第二个字符,依次向后扩展可能的重复串,即检查前3个字符组成的串是否重复,同样的方法统计,放入hashtable。然

2016-10-01 11:02:44 16660 3

原创 Java数组实现可以动态增长的队列

队列是一种先进先出的数据结构,由队尾进入,由队头删除,类似于现实中的排队。用Java数组实现队列,用first和last分别指向队头和队尾,用storage数组存储元素,但是需要注意的是不同于堆栈,数组中的元素不一定全是队列中的元素,因为如果是一般的数组,first在最前面,last在最后,可能会出现first和last都在数组最后指向一个元素(整个队列只有一个元素),不能增加元素,但是前面的空间

2016-09-28 20:05:37 4203 1

原创 java 数组实现栈

栈是一种先进后出的线性数据结构,只能对它的一端操类似于枪械的弹夹。据此可以用一个数组来实现堆栈。具体方法是:用指向第一个元素(栈底)的base下标,和指向最后一个元素(栈顶)的top下标实现。两个下标之间的元素才是栈中元素,所以入栈包含对数组元素赋值,和对下标top和base的操作(base只有空栈时才操作)。出栈只是操作两个下标,并不是真正删除数组中元素。另外,入栈时数组容量不够,入栈操作中要有

2016-09-26 19:08:38 823

原创 Java不指定长度的二维数组

编程中经常用到这样一种特殊的二维数组,它的行数确定,但是每行的列数不确定。这样的的数组实现方法:先创建制定行数,列数缺省的二维数组,然后对数组的每一行重新初始化。举个例子就很好理解了。import java.util.*;public class Tek{ public static void main(String[] args) { int[][] a=new in

2016-09-24 21:35:51 14079 3

原创 Java数组动态增加容量

Java数组初始化需要指定数组容量,但是在许多情况下需要动态扩充容量。有两种方法可以实现:1.采用ArrayList类数组,它可以在需要时自动扩容;2.采用System.arraycopy方法实现,其声明为:araycopy(Object src,int srcPos,Object dest,int destPos, int length)  写个代码就可明白了,示例如下:

2016-09-24 11:10:18 33505 1

原创 滴滴2017Java开发笔试题

刚写CSDN,上篇代码太丑,又不会HTML,现在现学现卖,重新编辑一下格式。题目:有个一个饭店,有n张桌子,每张桌子可以招待不同数量的客人,且不能拼桌,现在来了m批客人,每批客人有两个属性,一个是客人的总数,一个是他们消费(预计)的总额请设计一个算法,计算出,店家能够获得的最大利润我的思路很简单:将每批客人的消费金额,每批客人人数,桌子容量分别建立数组。按照金额从大到小将金额和人数同时排序

2016-09-19 09:15:30 5955 1

空空如也

空空如也

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

TA关注的人

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