自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Trie树:应用于统计和排序

转自:https://blog.csdn.net/hguisu/article/details/8131559Trie树:应用于统计和排序 1. 什么是trie树  1.Trie树 (特例结构树)        Trie树,又称单词查找树、字典树,是一种树形结构,是一种哈希树的变种,是一种用于快速检索的多叉树结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被...

2018-08-24 17:35:04 564

原创 tomcat部署项目遇到http status 404

问题:Tomcat安装成功,可以访问 http://localhost:8080/,但是不能访问项目页面,出现http status 404.解决方法:查看log文件显示:java.lang.UnsupportedClassVersionError,是编译的jdk版本与运行的jdk版本不一致导致的,选择升级jdk....

2018-08-06 11:00:30 2336 1

原创 剑指offer_链表逆置

/*反转链表并输出反转后链表的头结点与从尾到头打印链表还不一样,打印不需要改变链表结构初步思路:重建链表,与原来的反向,可行吗?将节点从头到尾记录在数组或栈中,从尾到头连接起来,但是这样就成了双向链表剑指offer:在原链表上进行指针操作即可*/class ReverseList { public static void reverseList(ListNode head)

2017-09-07 11:58:00 349

原创 剑指offer_从尾到头打印链表

/*问题:从尾至头打印链表思路:对于单链表,从头至尾遍历保存到ArrayList中,再从后向前打印,也可以使用栈来保存*/import java.util.ArrayList;class PrintListFromTailToHead{ //非递归,直接打印 public static void printListFromTailToHead(ListNode listnode

2017-09-07 11:57:02 283

原创 剑指offer_扑克牌顺子

/*从中抽出了5张牌,看看能不能抽到顺子,大小王可以当做任何数顺子需要满足什么条件?剑指offer:顺子需要满足排序后空缺数少于等于王的数目*/import java.util.Arrays;class IsContinuous{ public static boolean isContinuous(int [] numbers) { if (numbers==null|

2017-09-07 10:19:40 261

原创 剑指offer_圆圈中最后剩下的数字

/*圆圈中最后剩下的数字思路:循环队列,但队列是线性表,删除需要移动元素对于删除操作多的需求,考虑循环链表*/class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}class LastRemaining{ //O(mn) public s

2017-09-06 21:37:14 223

原创 剑指offer_求1+2+3+...+n

/*求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。剑指offer思路1:利用构造函数*/class Sum{ public static int n; public static int sum; Sum() { n++; sum+=n; } public

2017-09-06 18:13:35 397

原创 剑指offer_不用加减乘数做加法

/*写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。剑指offer思路:位运算分三步:不进位加,相当于异或 计算进位,相当于与之后再左移一位 第一步和第二部结果相加,相加过程同前两步,直到不产生进位为止*/class Add{ public static int add(int num1,int num2) { int sum=n

2017-09-06 10:07:03 241

原创 剑指offer_字符串转整数

/*将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0 输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0示例1输入+2147483647 1a33输出2147483647 0正常:字符串如何转换为数字有正负号如何处理异常:字

2017-09-05 09:52:01 195

原创 剑指offer_数组中的重复数字

/*在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。直接思路:利用辅助数组,遍历原数组,每出现一个数字,将辅助数组中该数字作为下标的元素值加1,下标大于1的就是重复元素

2017-09-04 22:13:46 205

原创 0交换排序

import java.util.Arrays;public class SwapWithZeroSort { public static void main(String[] args) { int[] array={2,0,1}; sort(array); System.out.println(Arrays.toString(array)); } //0交换排序 pu

2017-09-04 21:18:46 2268 1

原创 使用TCP协议实现客户端和服务器数据传输

/*客户端和服务端互访,传输字节流*/import java.net.*;import java.io.*;class TCPClient2 { public static void main(String[] args) throws Exception { Socket s=new Socket ("192.168.191.1",10004); OutputStrea

2017-09-03 17:22:27 4067

转载 关键路径计算

转自http://blog.csdn.net/wang379275614/article/details/13990163认识AOE网  有向图中,用顶点表示活动,用有向边表示活动之间开始的先后顺序,则称这种有向图为AOV网络;AOV网络可以反应任务完成的先后顺序(拓扑排序)。  在AOV网的边上加上权值表示完成该活动所需的时间,则称这样的AOV网为AOE网,如

2017-09-03 13:58:48 24868 1

原创 剑指offer_构建乘积数组

/*给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。双层for循环,外层求B[0,1,...,n-1],内层分别求A[0]*A[1]*...*A[i-1]和A[i+1]*...*A[n-1]*/class Multiply{ /

2017-09-03 13:21:46 192

原创 IO流简单用法

/*字符流从文本文件读取*/import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;public class BufferedReaderDemo { public static void main

2017-09-02 22:38:02 214

原创 剑指offer_正则表达式匹配

/*请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配。思路:从左到右,逐个匹配判断:若*(pattern+1) == '*', 若*pa

2017-09-02 20:58:04 388

原创 剑指offer_表示数字的字符串

/*请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:正负号只能出现在开头第一个或者指数第一个即E或者e之后第一个,"+-5" pass只能由数字或者E或者e组成,"1a3.14"

2017-09-02 20:29:45 388

原创 剑指offer_第一个只出现一次的字符

/*在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置*/import java.util.ArrayList;import java.lang.Character;class FirstNotRepeatingChar{ public static int firstNotRepeatingChar(String str)

2017-08-30 22:38:40 165

原创 剑指offer_字符流中第一个只出现一次的字符

/*请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。如果当前字符流没有存在出现一次的字符,返回#字符。如何理解字符流?与以前做过的int firstNotRepeatingChar(String str) 在一个字符串(1

2017-08-30 16:26:15 422

原创 剑指offer_二叉搜索树的第k个节点

/*题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路:二叉搜索树按照左根右遍历是由小到大按照左根右遍历每一个结点直到第k个要考虑k大于结点总数吗?此时会返回空k不使用静态就会出错,什么时候使用静态变量,什么时候使用参数传递?此处使用参数传递的话,k是按值传递,每次递归

2017-08-30 16:08:33 188

原创 剑指offer_链表中环的入口节点

/*一个链表中包含环,请找出该链表的环的入口结点。已知的关于环的知识点:环在末尾用快慢指针可以判断是否包含环,快慢指针能遇见则包含如果一个结点不在环上但它的下一个结点在环上,则下一个结点是入口节点如何判断一个结点在不在环上?结点在环上的话好判断,因为走一圈还可以再遇到,遇到就返回true不在环上的话,怎么判断?在环上走一圈没遇到就结束,认为不在环上,如何判断已经走了一圈?先找

2017-08-25 16:25:12 186

原创 剑指offer_删除链表中重复的节点

/*在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:遍历链表,判断当前结点的下一个结点是否与当前结点相同,若不相同则继续遍历下一个结点,若相同则找到下一个不相同的结点,中间的全部删除考虑头结点重复怎么办*/class DeleteDuplicat

2017-08-25 15:59:35 304

原创 剑指offer_二叉树的下一个节点

/*给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:根据给出结点找到根节点,再进行中序遍历,中序遍历过程添加next指针本地运行正确,但是在牛客网上运行出错,为什么?与面试题27将二叉搜索树转换为排序的双向链表类似,中序遍历的过程添加指针变成双向链表*/class TreeLinkN

2017-08-24 22:25:02 230

原创 剑指offer_对称二叉树

/*请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。剑指offer思路:如果二叉树按照根左右和根右左遍历得到的顺序是一样的,则二叉树是对称的如果树的结点值全部相同,根左右和根右左遍历得到的顺序是一样的,但树可能是不对称的,此时需要将null结点也考虑进去*/public class TreeNode { int

2017-08-24 21:26:18 194

原创 剑指offer_把二叉树打印成多行+之字形

/*1. 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。按层次打印可以用队列,如何保证一层输出一行,进队列的时候,加标记,出队时候遇到标记则一行结束剑指offer思路:用两个变量表示当前层还未打印的节点数和下一层的节点数*/import java.util.ArrayList;import java.util.ArrayDeque;import java.u

2017-08-23 17:02:31 263

原创 快速排序的递归与非递归实现

import java.util.Arrays;import java.util.Stack;class QuickSort { public static void quickSort(int[] array) { if (array==null||array.length==0) { return; } //递归算法 //quickSortCore(arr

2017-08-23 12:18:58 281

原创 剑指offer_数据流中的中位数

/*如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。思路1:采用ArrayList存储元素,每次添加一个元素就进行排序,排序调用Collections的sort函数,时间复杂度O(nlgn)排序后的ArrayList可以在O(1)得到中位数剑指

2017-08-22 22:35:34 207

转载 Java之HashMap与HashTable

集合类之番外篇:深入解析HashMap、HashTable                                                                                      作者:egg     新浪微博:http://weibo.com/xtfggefJava集合类是个非常重要的知识点,HashMap、HashTable、C

2017-08-22 21:53:44 212

原创 Java数组去重的多种方法

/*数组去重1:遍历数组,将元素依次添加进结果集中,如果结果集中已经存在,则不再添加,O(n*n)2:如果知道元素范围,比如是字母,或者数字在固定范围内,可以采用辅助数组,辅助数组下标是去重数组的元素,辅助数组元素时去重数组元素的个数,O(n)3:先将原数组排序,在与相邻的进行比较,如果不同则存入新数组4:利用HashSet集合无序不可重复的特性进行元素过滤5:TreeSe

2017-08-22 21:02:45 16907

转载 StringBuffer和StringBuilder的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常

2017-08-22 16:13:02 133

原创 剑指offer_滑动窗口的最大值

/*给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],

2017-08-22 15:53:41 308

原创 剑指offer_矩阵中的路径

/*请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c es f c sa d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字

2017-08-22 10:12:21 184

原创 剑指offer_机器人的运动范围

/*机器人的运动范围:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?思路1:应该是求最

2017-08-18 12:29:59 253

原创 剑指offer_调整数组顺序使得奇数位于偶数前面

/*输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。*/class ReOrderArray { public static int[] reOrderArray(int[] arr) { int[] temp=new int [arr.length];

2017-06-11 11:57:32 173

原创 剑指offer_用两个栈实现队列

/*用两个栈实现队列:要做到先进先出,stack2作为辅助栈:把第一个栈中的元素按照先进后出顺序取出放入第二个栈中,再从第二个栈中弹出来,如此便做到了先进先出;再将弹出完毕的stack2中剩余元素放回stack1;**/import java.util.Stack;class QueneWithTwoStacks { public static Stack stack1

2017-06-05 21:36:56 189

原创 剑指offer_根据前序和中序确定二叉树

/*重建二叉树:根据前序和中序确定二叉树思路:递归,找到前序的第一个元素在中序中的位置,该位置之前的元素均为左子树,该位置之后的元素均为右子树,递归处理左右子树*/class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }

2017-06-05 20:32:18 371

转载 继承中的方法调用顺序

转自http://blog.csdn.net/zhumintao/article/details/53818972#comments今天在牛客网刷题时碰到了这样一道题,感觉是很基础的知识点,但是要做出来并不容易,先来看一下题目[java] view plain copy /**  * Created by zmt on 2016/

2017-04-22 17:06:07 933

转载 抽象类和接口的区别

抽象类和接口的区别接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final (这里需要说一点,既然一个变量被final修饰了,那么这个变量就是一个常量!!!!!变量必须初始化成常量!!!!!)下面比较一下两者

2017-04-09 22:58:11 459

转载 中缀表达式转后缀表达

中缀表达式转换成后缀表达式并求值算法:中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6.

2017-04-09 22:26:30 401

原创 堆排序

class HeapSort { //堆排序 public static void heapSort(int[] arr) { buildMaxHeap(arr); int heapSize=arr.length-1; for (int i=heapSize;i>0 ;i-- ) { swap(arr,0,i); heapSize--; maxHeapfy

2017-04-05 22:56:57 237

空空如也

空空如也

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

TA关注的人

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