自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2021/8/19日知识点总结+MyBatis相关问题

慢慢又漫漫,漫漫亦灿灿

2021-08-19 20:18:00 144

原创 Tomcat启动时,加载Spring容器的过程是什么?

有趣都藏在无聊的日子里,所以保持热爱 @悄悄努力的人er

2021-08-18 20:16:57 499

原创 LeetCode_160. 相交链表(哈希表、双指针两种思路 Java)

^ _ ^ 有趣都藏在无聊的日子里,所以保持热爱 @悄悄努力的人er

2021-06-13 17:38:46 1186 1

原创 LeetCode_69. x 的平方根(二分法和数学公式代换 Java实现)

题目描述:69. x 的平方根实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4输出: 2示例 2:输入: 8输出: 2说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。解题思路:思路1:二分法看到题目后的第一个想法便是二分法,直接用,也没啥好多想的。class Solution { public int myS

2021-06-12 17:09:45 1115 1

原创 LeetCode_剑指 Offer 57. 和为s的两个数字(利用set、双撞指针两种思路 Java实现)

题目描述:剑指 Offer 57. 和为s的两个数字输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]思路描述:思路1:看到题目,总是首先想到暴力遍历,不出所料,超

2021-06-11 15:56:08 1128

原创 LeetCode_剑指 Offer 57 - II. 和为s的连续正数序列(Java实现)(包含滑动窗口的思想)

题目描述:剑指 Offer 57 - II. 和为s的连续正数序列输入一个正整数 target ,输出所有和为 target 的连续正整数序列(至少含有两个数)。序列内的数字由小到大排列,不同序列按照首个数字从小到大排列。示例 1:输入:target = 9输出:[[2,3,4],[4,5]]示例 2:输入:target = 15输出:[[1,2,3,4,5],[4,5,6],[7,8]]思路描述:思路1:暴力获取遍历每个正整数作为连续正整数序列起始元素,若以该元素为起点的元素之和等于

2021-06-08 10:25:57 142

原创 LeetCode_101. 对称二叉树(Java实现)

题目描述:101. 对称二叉树给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的思路描述(递归方法):判断当前树是否镜像,看它的左子树 t1 和右子树 t2 是否镜像对称。即,1,左子树 t1 的根节点与右子树 t2 跟节点是否相同2,t1 的左子树与 t2 的右子树是否镜像,并且 t1 的右子树与 t2 的左子树是否镜像这就形成了递归。/** * Definiti

2021-05-26 16:25:07 102

原创 LeetCode_剑指 Offer 22. 链表中倒数第k个节点(Java实现)

题目描述:剑指 Offer 22. 链表中倒数第k个节点输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.思路描述:使用双指针,让快指针先走,直至两指针差距为指定倒数节点数,然后

2021-05-23 18:39:24 149

原创 LeetCode_169. 多数元素(Java实现)

题目描述:169. 多数元素给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2思路描述:思路1:1.对数组进行排序,2.返回数组长度n/2索引处的元素由于多数元素出现次数大于n/2,所以,对数组排序后,中间的数一定是所找的多数元素,但由于排序导致效率减低class So

2021-05-17 12:30:39 293 1

原创 LeetCode_136. 只出现一次的数字(Java实现)

题目描述:136. 只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4思路描述:思路1:利用按位异或的运算法则,在二进制下相同取0,不同取1.故相同的两数异或后值为0;public int singleNumber(int[] nums) { int ans=0; for(int i=0

2021-05-14 17:04:40 183 2

原创 LeetCode_58. 最后一个单词的长度(Java实现、3种实现思路)

题目描述:58. 最后一个单词的长度给你一个字符串 s,由若干单词组成,单词之间用空格隔开。返回字符串中最后一个单词的长度。如果不存在最后一个单词,请返回 0 。单词是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5示例 2:输入:s = " "输出:0提示: 1 <= s.length <= 104 s仅有英文字母和空格 ’ ’ 组成思路描述:思路1:使用 split( ) 方法按‘ ’对字符

2021-05-13 14:50:49 425

原创 LeetCode_141. 环形链表(Java实现)

题目描述:141. 环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tru

2021-05-12 16:23:44 155

原创 LeetCode_66. 加一(Java实现)

题目描述:66. 加一给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入:digits = [1,2,3]输出:[1,2,4]解释:输入数组表示数字 123。示例 2:输入:digits = [4,3,2,1]输出:[4,3,2,2]解释:输入数组表示数字 4321。示例 3:输入:digits = [0]输出:[1]提示

2021-05-11 11:31:05 157 1

原创 LeetCode_121.122. 买卖股票的最佳时机I、II(Java实现)

题目描述:121. 买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-

2021-05-09 12:30:32 208

原创 LeetCode_21. 合并两个有序链表(Java实现)

题目描述:21. 合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]提示: 两个链表的节点数目范围是 [0, 50]-100 <= Node.val <= 100 l1 和 l

2021-05-08 17:50:39 128

原创 LeetCode_28. 实现 strStr()

题目描述:28. 实现 strStr()实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明:当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。 对于本题而言,当 needle是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。示例 1

2021-05-07 14:51:36 88

原创 LeetCode_70. 爬楼梯(Java实现)

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1 阶 + 1 阶 + 1 阶1 阶 + 2 阶2 阶 + 1 阶思路描述:针对该题,我们先来看看数据规律:当n=1时,f(1)=1种方法,{1};当n=2时,f(2)=2种

2021-05-06 14:07:24 142

原创 LeetCode_35. 搜索插入位置(Java实现)

题目描述:35. 搜索插入位置给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0思路描述:思路1:(相对来说比较暴力,速度不够快)由于数组有序,遍历数组,当

2021-05-05 13:26:32 207

原创 LeetCode_27.移除元素_283. 移动零(Java实现)

题目描述:27. 移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:输入:nums = [3,2,2,3], val = 3输出:2, nums = [2,2]解释:函数应该返回新的长度 2, 并且nums 中的前两个元素均为 2。你不需要考虑数组中超出新长度后面的元素。例如

2021-05-04 12:56:52 107

原创 LeetCode_20.有效的括号(Java解法)

题目描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”输出:false示例 5:输入:s = “{[]}”输出:true提示:1

2021-05-03 17:18:56 192

原创 Leetcode_88. 合并两个有序数组(Java实现)

题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。示例 1:输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3输出:[1,2,2,3,5,6]示例 2:输入:nums1 = [

2021-05-02 14:29:16 254

原创 Leetcode_26. 删除有序数组中的重复项(java实现)

题目描述:给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝int len = removeDuplicate

2021-05-01 13:43:17 341 1

原创 LeetCode_206. 反转链表(Java解法)

题目:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = [ ]输出:[ ]链表可以选用迭代或递归方式完成反转。递归法这个方法相对来说比较难理解,需要从后往前来进行处理,先拿到最后一个结点,让它的下一个引用指向上一个结点,上一个结点的引用设为空,然后递归调用,/** * Definiti

2021-04-30 16:18:36 185 1

转载 《算法图解》--内存工作原理

看到一篇很有意思关于计算机内存工作原理的解读,很赞,分享给大家!!!假设你去看演出,需要将东西寄存。 寄存处有一个柜子,柜子有很多抽屉。每个抽屉可放一样东西,你有两样东西要寄存,因此要了两个抽屉。计算机就像是很多抽屉的集合体,每个抽屉都有地址。fe0ffeeb是一个内存单元的地址。需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它们的差别很重要。有时候,需要在内存中存储一系列元素

2021-04-12 20:55:02 555 2

原创 数据结构--排序

简单排序1、Comparable接口java中提供的含比较规则的接口在这里我们以学生类为例:定义一个学生类Student,具有年龄age和姓名username两个属性,并通过Comparable接口提供比较规则;实现Comparable接口,重写compareTo()方法public class Student implements Comparable<Student>{ private String username; private int age; public

2021-03-28 17:27:39 103 1

原创 每日一练(只出现一次的字符)(3种实现方法)

题目描述:只出现一次的字符在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。实现1/** * @author apesource */public class Program021 { public static void main(String[] args) { System.out.println(firstUniqChar("apesource")); //a System.out.println(firstUniqChar("a

2021-02-08 12:01:32 345 3

原创 浅谈对HashMap的理解

浅谈对HashMap的理解:1.实现的接口HashMap同Hashtable,TreeMap都是Map接口的实现类,都是以键值对<key,value>的形式存储和操作数据的容器类型。2.底层存储结构HashMap基于哈希表进行存储,在JDK1.7之前由数组+链表组成。JDK1.8以后由数组+链表+红黑树,在解决哈希冲突时有较大的变化,当链表长度大于阈值(默认为8)并且数组长度大于64时,将链表转换成红黑树,以减少搜索时间。3.存储方式HashMap中的每一个元素(k,v键值对),都

2021-02-07 15:45:02 320 3

原创 每日一练(翻转句子中单词的顺序,但单词内字符的顺序不变)(三种思路)

题目描述:翻转单词顺序输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. “,则输出"student. a am I”。注意:不允许使用String类的split()方法进行切割思路1:public class Program020 { public static void main(String[] args) { System.out.println(reverseWord("I a

2021-02-04 14:10:25 692 1

原创 每日一练(查找指定字符串s中的连续字符串分组中的较大分组字符串)(两种实现)

找出指定字符串s中的连续字符串分组中的所有较大分组字符串题目描述:找出指定字符串s中的连续字符串分组中的所有较大分组字符串,并进行排序(先按照字符串内容长度排序,如果长度一致,再按照内容排序)P.s. 所有较大分组字符串是指原字符串中的连续字符数量大于等于3的字符串。例如:字符串"aabbbxxxxzzdddyyyaaaaa"中包含:“aa”,“bbb”,“xxxx”,“zz”,“ddd”,“yyy”,"aaaaa"7个分组其中"bbb",“xxxx”,“ddd”,“yyy”,"aaaaa"五个

2021-02-02 20:58:08 191 1

原创 每日一练(深度遍历指定目录及其子目录,统计各种文件格式的数量)

题目描述:深度遍历指定目录及其子目录,统计各种文件格式的数量例如:{css=192, xmind=45, def=5, py=1, bak=2, patch=1, BSD=5, exe=17}import java.io.File;import java.util.HashMap;import java.util.Map;public class Program018 { public static void main(String[] args) { // 原始目录 Str

2021-02-01 20:02:10 211 3

原创 Leetcode_14. 最长公共前缀(Java解法)

题目:14. 最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 " "。示例 1:输入:strs = [“flower”,“flow”,“flight”输出:“fl”示例 2:输入:strs = [“dog”,“racecar”,“car”]输出:""解释:输入不存在公共前缀。提前说,我先用了一个Arrays工具类中的自定义比较方法,通过字符串数组中元素长度进行排序,这样就大大降低了后面进行判断是否是该前缀时,所引发的空指针异常和字符串下

2021-01-31 18:59:34 235

原创 Leetcode-13. 罗马数字转整数(Java解法)

题目:罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符数值I1V5X10L50C100D500M1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的

2021-01-30 19:28:42 117

原创 每日一小练之回文数(两种方法)

题目描述:输入一个整数 n,请检查是否是"回文数"回文数:正向与反向都一致的数字例如:输入:12321返回:1 代表是回文数输入:9527返回:0 代表不是回文数思路我们要输入一个整数,然后再判断这个整数是否为回文数,如果是回文数输出1,如果不是输出0;那我们首先要解决输入问题创建一个Scanner类对象input,利用类中的nextInt()方法获取键盘输入的数字。紧接着,我们就该要判断它是否是回文数了,怎么判断呢,那不就是把这个数字第一位与最后一位比较是否相同,第二位与倒数第二位

2021-01-19 19:37:15 395 2

原创 每日一小练(字符串压缩)

题目描述:字符串压缩:将原字符串中连续出现的字符,按照出现次数进行压缩处理。输入:AACBBBDDDDDFFX输出:A2C1B3D5F2X1思路:1.获取输入:利用Scanner类创建input对象(注意要导包,即下面程序第一行),获取要压缩的字符串,并需定义一个number计数器并初始化为1,用来记录当前字符出现次数,因为当前字符至少出现1次。2.压缩利用for循环先获取当前字符与下1个字符(charAt()),然后判断二者是否相同,若相同,计数器累加,如果不相同,则输出当前字符和出现

2021-01-18 08:52:25 113 2

原创 抽象类与接口

一、抽象类1.什么是抽象类在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对 象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类用来描述一种类型应该具备的基本特征与功能, 具体如何去完成这些行为由子类通过方法重写来完成,如:宠物类中,各种宠物都会吃东西,但由于吃的东西不同,猫吃鱼,狗吃骨头,所以吃东西这个细节并不相同,我们就让其子类具体实现。特点: 抽象类不能被实例化(不能创建对象)功能:用来进行类型隐藏和充当全局变量。关

2021-01-17 17:44:22 59 2

原创 每日一小练(「各位数字之积」与「各位数字之和」的差)

题目描述:输入一个整数 n,请计算并返回该整数「各位数字之积」与「各位数字之和」的差例如:输入:234返回:15解释:各位数之积 = 2 * 3 * 4 = 24各位数之和 = 2 + 3 + 4 = 9结果 = 24 - 9 = 15思路:1.输入,创建一个Scanner类的input对象,用nextInt()方法将输入的整数保存至int类型的number中。并定义变量,各位数字之和(sum)并初始化为0,各位数字之积(result)并初始化为1。2.获取number中的每一位数字方

2021-01-17 10:27:42 1173 3

原创 String、StringBuffer与StringBuilder之间区别

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优先的内存空间。但StringBuffer和StringBuilder就弥补了不足。StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。1.StringBuffer// JDK1.0 // 线程安全 // 性能略差 StringBuffer sb = new StringBuffer("AA"); sb.appen

2021-01-16 17:23:32 66 1

原创 基于Java的String字符串基本用法总结

这里写目录标题一、String字符串的创建方式1:在字符串池里直接创建方式2: 在堆中开辟空间,创建并保存字符串方式3:将字符数组,转换成字符串二.String类的常用方法1. equals() : 方法2. String.valueOf()3. String.format( )4. charAt()5. toCharArray()6.split( )7.compareTo( )8. equals( ) 或 equalsIgnoreCase( )9. contains( )10.startsWith( )

2021-01-11 21:41:31 1420 11

空空如也

空空如也

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

TA关注的人

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