自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java集合之LinkedList详解

LinkedList简介LinkedList继承了AbstractSequentialList,实现List、Deque、Cloneable、Serializable接口。public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable{}LinkedLis

2021-10-24 18:20:45 246

原创 Java集合之ArrayList详解

ArrayList简介ArrayList继承与AbstractList,实现List、RandomAccess、Cloneable、Serializable接口。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{}ArrayList 继承了AbstractList,实

2021-08-15 22:34:03 962

原创 MyBatis BindingException: Invalid bound statement (not found)

BindingException: Invalid bound statement (not found)问题

2021-07-10 15:56:50 437

原创 Spirng Boot整合支付宝沙箱测试

背景:在项目,需要用到支付功能,支付宝提供沙箱测试环境,阿里巴巴快打广告费…一. 支付宝沙箱环境1.1 注册账号在准备之前,你得有一个账号,https://open.alipay.com/platform/appDaily.htm?tab=info官网注册账号1.2 创建研发应用我用到的是网页&移动应用,你可以根据你的需要完成创建应用,按照提示创建即可,需要提交审核,名称不能包含阿里,支付宝等等,应用图标不能为常见的图标,存在侵权,等待审核通过。接下来,配置沙箱配置,APPID,支

2021-06-09 15:01:47 286 1

原创 【剑指Offer】扑克牌顺子

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

2021-03-03 23:21:10 134

原创 【剑指Offer】孩子们的游戏(圆圈中最后剩下的数)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!^_^)。请你试着想下,哪个小朋友

2021-03-03 23:20:18 128

原创 【剑指Offer】左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!示例1输入“abcXYZdef”,3返回值“XYZdefabc”解题思路构建新的字符串,先将传入的字符串后端部分追加,在追加前端部分。代码public class Solutio

2021-02-19 22:34:18 126

原创 【剑指Offer】数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路遍历一遍数组,用HashMap记录数字出现的次数,然后遍历map,找出出现1次的数字。代码import java.util.HashMap;//num1,num2分别为长度为1的数组。传出参数//将num1[0],num2[0]设置为返回结果public class Solution { public void FindNumsAppearOnce(int [] array,i

2021-02-19 22:29:17 111

原创 【剑指Offer】平衡二叉树

【剑指Offer】二叉树的深度

2021-02-19 22:07:56 77

原创 【剑指Offer】第一个只出现一次的字符位置

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)示例1输入“google”返回值4解题思路遍历字符串,记录每个字符出现的次数,使用LinkedHashMap存储。再次遍历Map找到第一个只出现一次的字符,返回字符在字符串中的位置。代码import java.util.LinkedHashMap;public class Soluti

2021-02-05 20:40:35 113

原创 【剑指Offer】两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)解题思路链表a的长度为len1,链表b的长度为len2len1 != len2但len1+len2 = len2+len1代码/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val;

2021-02-05 20:38:31 90

原创 【剑指Offer】二叉树的深度

题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。示例1输入{1,2,3,4,5,#,6,#,#,7}返回值4解题思路递归数据结构树的遍历/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val)

2021-02-04 19:36:37 129

原创 【剑指Offer】数字在排序数组中出现的次数

题目描述统计一个数字在升序数组中出现的次数。示例1输入[1,2,3,3,3,3,4,5],3返回值4解题思路直接遍历数组是有序数组,可以直接遍历数组,记录数字k在数组中出现的次数。public class Solution { public int GetNumberOfK(int [] array , int k) { int res = 0; for (int i = 0; i < array.length; i++)

2021-02-04 19:04:22 85 1

原创 【剑指Offer】数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。示例1输入[1,2,3,2,2,2,5,4,2]返回值2解题思路使用Map存储数组中的元素、以及出现的次数。再次遍历Map,当数字出现的数字超过数组长度的一半,返回当前的key,否则返回0。时间复杂度:O(n)空间复杂度:O(n)代码import jav

2021-02-02 00:07:55 75

原创 【剑指Offer】复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路参考博主的思路,如图片的水印。代码/*public class RandomListNode { int label; RandomListNode next = null; RandomListNode random =

2021-02-02 00:06:55 79

原创 【操作系统】思维导图

操作系统思维导图绪论进程管理内存管理文件管理输入输出管理【参考文献】汤小丹 《计算机操作系统》(第四版)王道整理得有些杂乱,难免有错不足,希望指正。如果对您有作用,希望点个赞,有需要,可以发送给您。...

2021-01-10 12:53:16 842

原创 【剑指Offer】二叉树中和为某一值的路径

题目描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。示例1输入{10,5,12,4,7},22返回值[[10,5,7],[10,12]]示例2输入{10,5,12,4,7},15返回值[]解题思路代码import java.util.ArrayList;/**public class TreeNode { int val =

2021-01-08 14:53:54 78

原创 【剑指Offer】二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。示例1输入[4,8,6,12,16,14,10]返回值true解题思路我们知道二叉搜索树,左子树<根结点<右子树。后序遍历,最后一个结点为根结点,因此绿色的10为根结点。遍历数组,找到第一个大于根结点的结点,说明前面的为左子树继续向后遍历,如果有小于根结点的,则返回false,否则,后面的为右子树递归进行

2021-01-08 14:16:01 79

原创 【剑指Offer】从上往下打印二叉树

题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。示例1输入{5,4,#,3,#,2,#,1}返回值[5,4,3,2,1]解题思路数的层次遍历。代码import java.util.ArrayList;import java.util.LinkedList;import java.util.Queue;/**public class TreeNode { int val = 0; TreeNode left = null; Tr

2021-01-07 19:21:42 69

原创 【剑指Offer】包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路声明两个栈,一个记录数据,另一个记录最小数据当前的最小数据。例如:依次压入3,4,2,5,0。因此dataStack为3,4,2,5,0,minStack为3,3,2,2,0每次出栈,不仅要把dataStack栈顶元素弹出,还要把minStack栈顶元素弹出。显然空间复杂度较高。import java.util.Stack;public class Solution {

2021-01-06 14:09:24 88

原创 【剑指Offer】顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.示例1输入[[1,2],[3,4]]返回值[1,2,4,3]解题思路代码import java.util.ArrayList;public class Solution { public Ar

2021-01-06 14:09:02 81

原创 【剑指Offer】二叉树的镜像

题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:解题思路分别交换结点的左右子树,对子树进行相同操作。代码/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution {

2021-01-05 12:52:49 71

原创 【剑指Offer】合并两个排序的链表

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。示例1输入{1,3,5},{2,4,6}返回值{1,2,3,4,5,6}解题思路两个单调递增的链表依次比较list1和list2的结点,将小的结点链接到q后,指针相应的移动。代码/*public class ListNode { int val; ListNode next = null; ListNode(int val) {

2021-01-05 12:51:41 99

原创 【剑指Offer】反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}解题思路头插法/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(L

2021-01-04 12:28:37 61

原创 【剑指Offer】链表中倒数第k个结点

题目描述输入一个链表,输出该链表中倒数第k个结点。示例1输入1,{1,2,3,4,5}返回值{5}解题思路(1)直接循环遍历,计算出总共有n个结点,再遍历一次,找到n-k个结点。/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution

2021-01-04 12:27:47 85

原创 【剑指Offer】调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路import java.util.ArrayList;import java.util.List;public class Solution { public void reOrderArray(int [] array) { List<Integer> list = new Arr

2021-01-04 12:26:24 60

原创 【剑指Offer】数值的整数次方

题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0示例1输入2,3-返回值8.00000解题思路很多语言都提供了这个函数,想看看源码,可惜。^~^public class Solution { public double Power(double base, int exponent) { return Math.pow(base, expone

2021-01-04 12:25:21 51

原创 【剑指Offer】二进制中1的个数

题目描述输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1输入10返回值2解题思路代码

2021-01-04 12:24:18 62

原创 【剑指Offer】矩形覆盖

题目描述我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?比如n=3时,2*3的矩形块有3种覆盖方法:示例1输入4返回值5解题思路这个题目与跳台阶那个题目类似。当然也可以使用递推方法,推出规律:n=1:1种n=2:2种n=3:3种n=4:5种……F(n)=F(n-1)+F(n-2)递归public class Solution { public int RectCover

2021-01-04 12:23:27 71

原创 【剑指Offer】变态跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。示例1输入3返回值4解题思路在剑指Offer的跳台阶中,如果下一步是n阶台阶,则只有两种可能,一种是在n-1阶台阶,二种是在n-2阶台阶,因此F[n]=F[n-1]+F[n-2]。现在有n种,F[n]=F[n-1]+F[n-2]+F[n-3]+……+F[2]+F[1]+F[0]其中:F[0]=F[1]=1直接循环public class Solut

2021-01-04 12:22:47 64

原创 【剑指Offer】跳台阶

题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。示例1输入1返回值1示例2输入4返回值5解题思路如果下一步是n阶台阶,则只有两种可能,一种是在n-1阶台阶,二种是在n-2阶台阶,因此F[n]=F[n-1]+F[n-2]。我们可以清楚地知道:(1)n=1时,只有一种可能,即F[1]=1(2)n=2时,有两种可能,即F[2]=2递归public class Sol

2021-01-04 12:21:45 53

原创 【剑指Offer】斐波那契数列

题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n≤39示例1输入4返回值3解题思路递归F(0)=0,F(1)=1F(n)=F(n - 1)+F(n - 2)(n ≥ 2)public class Solution { public int Fibonacci(int n) { if(n==0 || n==1) return n; r

2021-01-04 12:20:49 93

原创 【剑指Offer】旋转数组的最小数字

题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。示例1输入[3,4,5,1,2]返回值1解题思路暴力解决寻找数组的最小值,直接可以暴力解决,遍历一遍数组,查找到最小值。显然,这不是最优解,也不是题目希望看到的。import java.util.ArrayList;public class Solution {

2021-01-04 12:19:29 62

原创 【剑指Offer】用两个栈实现队列

题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。解题思路模拟一遍:(1)首先插入1,2,3,4,栈的情况:stack1={1,2,3,4};stack2={}(2)删除一个元素,由于1是最先插入的,所以1应该最先删除,因此需要将2,3,4压入stack2中,删除1,栈的情况:stack1={};stack2={4,3,2}(3)继续删除一个元素,2是第二个插入的,因此直接从stack2中出栈(4)插入一个元素5,将5压入stack1(5)继续删除两

2020-12-19 19:48:50 96 2

原创 段页式管理方式

前言在前面文章基本分页存储管理方式和分段存储管理方式中介绍了非连续分配管理方式的基本分页存储管理方式。接下来,本文将介绍非连续分配管理的第三种方式——段页式存储管理方式分页、分段的优缺点分页优点:内存空间利用率高,不会产生外部 碎片,只会有少量的页内碎片缺点:不方便按照逻辑模块实现信息的共享和保护分段优点:很方便按照逻辑模块实现信息的共享和保护缺点:如果段长过大,为其分配很大的连续空间会很不方 便。另外,段式管理会产生外部碎片分段管理中产生的外部碎片也 可以用“紧凑”来解决,只

2020-12-18 15:02:53 2761

转载 超详细!KMP算法

串的模式匹配模式匹配是数据结构中字符串的一种基本运算,给定一个子串,要求在某个字符串中找出与该子串相同的所有子串,这就是模式匹配。假设P是给定的子串,T是待查找的字符串,要求从T中找出与P相同的所有子串,这个问题成为模式匹配问题。P称为模式,T称为目标。如果T中存在一个或多个模式为P的子串,就给出该子串在T中的位置,称为匹配成功;否则匹配失败。...

2020-10-24 10:45:54 361

原创 【操作系统】读者-写者问题

读者-写者问题读者进程和写者进程共享一个文件,当两个或两个以上的读进程同时访问共享数据时不会产生副作用,但若某个写进程和其他进程(读进程或写进程)同时访问共享数据时则可能导致数据不一致的错误。1、允许多个读者可以同时对文件执行读操作2、只允许一个写者往文件中写信息3、任一写者在完成写操作之前不允许其他读者或写者工作4、写者执行写操作前,应让已有的读者和写者全部退出分析互斥关系:写者进程与写者进程,写者进程与读者进程读者进程与读者进程不存在互斥关系。semaphore rw=1; //用于实

2020-10-24 10:09:29 1104

原创 括号匹配——栈的应用

括号匹配问题括号匹配,是栈的一个重要的应用,在表达式求值中也应用十分广泛。就是检查左右括号是否匹配。来看看一道LeetCode问题,你就明白是怎么回事了。题目简述给定一个只包含 ‘(’,’)’,’{’,’}’,’[‘和’]'的字符串,判断字符串是否有效。有效的条件为:括号必须有相同的括号对应, 且括号必须以正确的顺序对应。示例1:输入:"()"输出:true示例2:输入:"()[]{}"输出: true示例3:输入:"([)]"输出:true...

2020-10-24 10:07:44 1012

原创 基本分段存储管理方式

前言在上篇文章基本分页存储管理方式中介绍了非连续分配管理方式的基本分页存储管理方式。接下来,本文将介绍非连续分配管理的第二种方式——基本分段式存储管理方式分页实现离散分配,提高内存利用率。分页是系统管理完成的,对用户是不可见的。分段存储管理方式考虑了用户,以满足方便编程、信息共享、信息保护、动态增长及动态链接等多方面的需求。分段在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。每个段都有自己段名,为了实现简单,通常可用段号来代替段名,每个段都从0开始,并采用一段连续的

2020-10-08 22:25:07 1789

原创 基本分页存储管理方式

单臂路由简单实现单臂路由拓展(三个交换机 一个路由器 4台pc)

2020-09-28 22:26:10 8286

空空如也

空空如也

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

TA关注的人

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