自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符串匹配KMP算法、Sunday算法

public class Main { public static void main(String[] args) { System.out.println(violentStringMatcher("abcabaabaabcacb", "abaabcac")); System.out.println(kmpMatch("abcabaabaabcacb",...

2019-08-07 12:58:38 172

原创 Java实现对MySQL数据库的增删改查

本次使用的数据库为:import java.sql.*;public class test2 { //数据库的用户名与密码 static final String JDBC_Driver = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/test1"; //数据库...

2019-06-03 20:14:28 793

原创 Java连接数据库

使用JDBC连接MySQL数据库import java.sql.*;public class test1 { //JDBC 驱动名及数据库 URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost:3306/...

2019-06-03 18:08:11 146

原创 二叉树前序、中序、后序遍历——Java实现

在非递归实现中,需要借助栈来实现。前序和中序比较类似,也简单一些,但是后序遍历需要两个栈来进行辅助,稍微复杂一些。前序遍历:先遍历根结点,然后遍历左子树,最后遍历右子树4 2 1 3 6 5 7 8中序遍历:先遍历左子树,然后遍历根结点,最后遍历右子树1 2 3 4 5 6 7 8后序遍历:先遍历左子树,然后遍历右子树,最后遍历根结点1 3 2 5 8 7 6 41、递归实现cl...

2019-06-03 15:33:55 240

原创 【剑指Offer学习】【题66:机器人的运动范围】

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

2019-05-29 11:37:10 154

原创 【剑指Offer学习】【题65:矩阵中的路径】

题目:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串...

2019-05-29 10:47:34 155

原创 【剑指Offer学习】【题64:滑动窗口的最大值】

题目:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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],2,5,...

2019-05-28 19:54:48 133

原创 【剑指Offer学习】【题63:数据流中的中位数】

题目:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路:创建链表,将数据插入链表中,然后利用Arrays.sort()进行排序,进而获取中位数程序:im...

2019-05-28 14:30:26 126

原创 【剑指Offer学习】【题61:序列化二叉树】

题目:请实现两个函数,分别用来序列化和反序列化二叉树思路:序列化主要就是在前后端交互时候需要转换下,毕竟网络传输的是流式数据(二进制或者文本),而不是对象。所以序列化二叉树就是转化成字符串。之前解决重建二叉树问题时,我们可以知道,两个遍历序列就可以确定一颗二叉树。(比如前序遍历序列和中序遍历序列)。受此启发,序列化时候我们可以生成一个前序遍历序列和一个中序遍历序列,在反序列化时通过这两个...

2019-05-27 13:45:00 117

原创 【剑指Offer学习】【题60:把二叉树打印成多行】

题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路:与剑指offer第22题类似(https://blog.csdn.net/CheDaqian/article/details/89575456)不同之处在于第22题要求依次输出结点,而本题要求每一层输出一行。引用了start和end分别来记录本层的第几个结点、表示在一层中有几个结点。当start=end时,添加...

2019-05-25 19:46:02 140

原创 【剑指Offer学习】【题59:按之字形顺序打印二叉树】

题目:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:利用两个栈辅助输出奇数行的栈,先存右结点,后存左结点,这样就实现了从左向右输出。偶数行的栈,先存左结点,后存右结点,这样就实现了从右向左输出。程序:import java.util.ArrayList;import java.u...

2019-05-25 14:46:26 126

原创 【剑指Offer学习】【题58:对称的二叉树】

题目:请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路:使用递归的方式进行了比较,另外这里的对称,是说镜像相同。而镜像与原来的是反的。即左子树的左子树与右子树的右子树相同。1、结点为空时,返回true;2、比较左右子结点的值:①当对应左右子结点都为空时,返回true;②当对应左右子结点/一个为空,一个不为空时,说明树不...

2019-05-23 21:05:49 144

原创 计算机网络——HTTP和HTTPS

基础概念HTTP(HyperText Transfer Protocal)超文本传输协议,是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。HTTP 默认工作在 TCP 协议 80 端口,用户访问网站 http:// 打头的都是标准 HTTP 服务。HTTP 协议...

2019-05-23 20:40:06 258

原创 数据库mysql---运算符

2019-05-23 19:11:11 227

原创 数据库mysql---DDL、DML、DCL

2019-05-22 20:58:16 158

原创 【剑指Offer学习】【题57:二叉树的下一个结点】

题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:可分为两种情况:(1)有右子结点的:下个结点是以该右孩子为根节点的子树的最左边的结点;(2)没有右子结点的:(i)是父结点的左孩子,那么父结点就是下一结点;(ii)是父结点的右孩子,找它父结点的父结点的父结点…直到当前结点是其父结点的左孩...

2019-05-22 15:13:28 119

原创 【剑指Offer学习】【题56:删除链表中重复的结点】

题目:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:利用递归的方式,依次进行判断程序: class ListNode { int val; ListNode next = null; L...

2019-05-22 10:25:19 109

原创 【剑指Offer学习】【题55:链表中环的入口结点】

题目:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:思路1:创建一个链表用于按扫描的顺序保存节点,直到下一个节点在list中已经存在,那就说明该节点就是入口节点思路2:规律求解创建两个指针p1、p2,其中p1的步长为1,p2的步长为2。让两个指针从头结点开始往后走,如果有环的话,两个指针一定会相遇。程序:程序1:import java.util...

2019-05-22 09:23:07 126

原创 【剑指Offer学习】【题54:字符流中第一个不重复的字符】

题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:创建两个辅助空间:(1)哈希表HashMap:将字符放入表中,并且每次字符对应位置将次数加1;(2)链...

2019-05-21 20:35:17 130

原创 【剑指Offer学习】【题53:表示数值的字符串】

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。思路:数字的表现格式为(±)A.BE/e(+-)C,A为整数部分,B为小数部分,C为指数部分1、判断整数部分是否有正负号2、判断整数部分的...

2019-05-21 19:48:09 125

原创 【剑指Offer学习】【题51:构建乘积数组】

题目:给定一个数组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]。不能使用除法。思路:1、求上三角;2、求下三角;3、上三角与下三角相乘。程序:public class subject51 { public static int[] multiply(int[] A) { ...

2019-05-21 16:53:34 113

原创 【剑指Offer学习】【题49:把字符串转换成整数】

题目:题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0思路:1、首先判断是否有符号位,若有,则从字符串的第...

2019-05-18 20:48:28 128

原创 【剑指Offer学习】【题48:不用加减乘除做加法】

题目:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:1、将两个数字均转化为二进制;2、sum记录各位相加,但不进位;3、carry记录下进位位;4、将sum与carry相加,直到不产生进位。注意:不考虑进位时,0+0,1+1的结果都为0,0+1,1+0的结果为1。这与异或的结果一样;考虑进位时,0+0,0+1,1+0都不产生进位,只有1+1产生...

2019-05-18 19:55:51 120

原创 【剑指Offer学习】【题47:求1+2+3+...+n】

题目:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:使用递归的方法利用“&&”逻辑与,前面为假,后面语句不再执行的特点,使得n = 0时,停止递归,返回结果。程序:import java.util.Scanner;public class subject47 { pu...

2019-05-18 19:36:27 127

原创 牛客网-一闪一闪亮晶晶

题目:

2019-05-18 17:14:39 288

原创 牛客网-牛牛和妞妞拿扑克牌做游戏

题目:思路:暴力循环程序:import java.text.DecimalFormat;import java.util.Scanner;public class subject1 { public static double haveSuccess(int[] array1, int[] array2) { if(array1 == null || array2 == n...

2019-05-17 20:38:22 480

原创 【剑指Offer学习】【题45:扑克牌顺子】

题目:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌...

2019-05-15 12:29:26 174

原创 【剑指Offer学习】【题44:翻转单词顺序列】

题目:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:1、先翻转整个字符...

2019-05-15 10:34:25 115

原创 【剑指Offer学习】【题43:左旋转字符串】

题目:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:思路1:使用Java自带的substring(beginIndex, endIndex)函数...

2019-05-15 10:08:04 110

原创 【剑指Offer学习】【题42:和为S的两个数字】

题目:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:1、当a+b = c时,ab<=(a+b)的平方/4,当且仅当a==b时,ab取得最大值,二者相差越远,乘积越小。2、定义两个指针start和end,分别指向数组的第一个元素和数组的第二个元...

2019-05-15 09:30:32 106

原创 【剑指Offer学习】【题41:和为S的连续正数序列】

题目:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数序列。序列...

2019-05-14 21:05:58 118

原创 【剑指Offer学习】【题40:数组中只出现一次的数字】

题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:从头到尾依次异或数组中的每一个数字,那么最终得到的结果就是两个只出现一次数字的异或结果。因为其他数字出现了两次,在异或中全部抵消了。由于这两个数字不相等,那么异或结果不为0,也就是说这个结果数字的二进制表示至少有一位为1。我们在结果数字的二进制表示中找到第一个为1的位的位置,记为n位。第...

2019-05-14 20:16:36 88

原创 【剑指Offer学习】【题39:平衡二叉树】

题目:输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:平衡二叉搜索树(Self-balancing binary search tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。在题38的基础上,只需要判断左右子树的深度差是否小于等于1即可。程序:程序1:public cl...

2019-05-14 19:31:53 120

原创 【剑指Offer学习】【题38:二叉树的深度】

题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:思路1:利用递归的思想,判断当前结点是否为空,若为空返回0;若不为空,返回左右结点的递归后各自+1的最大值(1表示这一层有数据)思路2:非递归的思想:借助队列来存储节点,来实现层遍历的效果1、先将根结点入队列;2、将根结点出队列。若如果该结点有子结点...

2019-05-14 19:05:58 136

原创 【剑指Offer学习】【题37:数字在排序数组中出现的次数】

题目:统计一个数字在排序数组中出现的次数。思路:利用二分查找法,分别查找数字在顺序数组中第一次出现的坐标和最后一次出现的坐标。1、第一次出现的坐标:先将数组中间数字与k进行比较,(1)若中间数字等于k,如果中间数字的前一位不等于k,则返回中间数字的坐标;如果中间数字的前一位等于k,则第一个k肯定出现在数组的前半段,下一轮在数组的前半段进行查找。(2)若中间数字大于k,则k只能出现在数...

2019-05-14 15:59:18 103

原创 【剑指Offer学习】【题36:两个链表的第一个公共结点】

题目:输入两个链表,找出它们的第一个公共结点。思路:由于是单链表,当出现公共结点以后,后面部分均相同。1、当链表长度相同时,两个链表从头开始同步遍历,一定会找到第一个共同的结点;2、当链表长度不同时,先让长链表遍历多出的那部分,再同时遍历。程序:public class ListNode{ int val; ListNode next; ListNode(int val){ ...

2019-05-13 21:24:22 103

原创 【剑指Offer学习】【题34:第一个只出现一次的字符】

题目:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).思路:1、创建一个新表格arr统计各字母出现的次数;2、访问并返回arr表格中只出现一次字母的坐标。程序:public class subject34 { public static int FirstNotRepea...

2019-05-10 19:58:18 176

原创 【剑指Offer学习】【题33:丑数】

题目:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:1、暴力循环,但运行时间过长;2、以空间换时间,提高时间效率。创建一个数组ugly,用于存储新求出来的丑数。每次存储的一个数是依次用2,3,5乘上数组中已经求出来的丑数,选出其中最小的一个。例如...

2019-05-10 10:26:13 121

原创 【剑指Offer学习】【题32:把数组排成最小的数】

题目:输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。思路:1、数组中所有的数拼接后有可能会超过整数的范围,因此本题必须要使用字符串来处理;2、两个数字m和n能拼接成数字mn和数字nm,如果mn<nm那么说明m应该排在n前面,我们应该打印出mn;反之,如果n...

2019-05-10 09:13:53 112

原创 【剑指Offer学习】【题29:最小的K个数】

题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:程序:public class subject29 { public static int[] GetLeatNumbers_Solution(int[] input, int k){ if(input == null || input.length ...

2019-04-29 20:32:04 151

空空如也

空空如也

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

TA关注的人

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