- 博客(206)
- 收藏
- 关注
原创 Java学习之HashMap源码阅读
文章目录HashMap源码阅读一、阅读说明二、JDK1.8之前和JDK1.8之后的区别1. 底层数据结构的不同2. hash碰撞后的链表插入方式不同3. Entry替换成了Node三、重要的参数四、用到的数据结构五、重要的方法六、总结参考来源:HashMap源码阅读一、阅读说明本文所读HashMap源码系源于jdk14.0.1。二、JDK1.8之前和JDK1.8之后的区别1. 底层数据结构的不同JDK1.8之前:数组+链表。JDK1.8之后:数组+链表+红黑树。JDK1.8对HashM
2021-11-05 22:01:47 272
原创 Markdown学习
Markdown学习标题标题前面用#号,一个#号为一级标题,两个为二级标题,以此类推。如:# 一级标题、## 二级标题字体粗体用两个*号斜体用一个*号***又粗又斜**用三个号引用用一个大于号来使用引用:>引用可以嵌套,也可以带有粗体之类的元素分割线三个星号插入图片语法代码:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wYHEAIvJ-1635513333554)(图片链接)][外链图片转存失败,源站可能有防盗链机制
2021-10-29 21:18:05 93
原创 HJ10 字符个数统计
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档HJ10 字符个数统计题目描述解题过程解题思路总结题目描述描述编写一个函数,计算字符串中含有的不同字符的个数。字符在ASCII码范围内(0~127,包括0和127),换行表示结束符,不算在字符里。不在范围内的不作统计。多个相同的字符只计算一次例如,对于字符串abaca而言,有a、b、c三种不同的字符,因此输出3。输入描述:输入一行没有空格的字符串。输出描述:输出 输入字符串 中范围在(0~127,包括0和127)字符的种数
2021-08-06 10:36:36 90
原创 HJ9 提取不重复的整数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档HJ9 提取不重复的整数题目描述解题过程解题思路总结题目描述描述输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。保证输入的整数最后一位不是0。输入描述:输入一个int型整数输出描述:按照从右向左的阅读顺序,返回一个不含重复数字的新的整数示例1输入:9876673输出:37689解题过程解题思路利用Set不存储重复元素的特点,倒序得到不重复的字符数字,最后输出。impor
2021-08-05 19:32:08 149
原创 HJ8 合并表记录
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档HJ8 合并表记录题目描述解题过程解题思路总结题目描述描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)示例1输入:40 10 21 23 4输出:0 31 23 4解题过程解题思路
2021-08-05 19:24:56 83
原创 HJ5 进制转换
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档HJ5 进制转换题目描述解题过程解题思路总结题目描述描述写出一个程序,接受一个十六进制的数,输出该数值的十进制表示。输入描述:输入一个十六进制的数值字符串。注意:一个用例会同时有多组输入数据,请参考帖子https://www.nowcoder.com/discuss/276处理多组输入的问题。输出描述:输出该数值的十进制字符串。不同组的测试用例用\n隔开。示例1输入:0xA0xAA输出:10170解题过
2021-08-05 11:46:20 180
原创 HJ6 质数因子
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档HJ6 质数因子题目描述解题过程解题思路总结题目描述描述功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )最后一个数后面也要有空格输入描述:输入一个long型整数输出描述:按照从小到大的顺序输出它的所有质数的因子,以空格隔开。最后一个数后面也要有空格。示例1输入:180输出:2 2 3 3 5解题过程解题思路质数因子:从2开始不停用除
2021-08-05 11:01:28 276
原创 面试题 17.13. 恢复空格
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 17.13. 恢复空格题目描述解题过程解题思路总结题目描述哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!“已经变成了"iresetthecomputeritstilldidntboot”。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里
2021-08-02 20:47:38 87
原创 面试题 05.03. 翻转数位
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 05.03. 翻转数位题目描述解题过程解题思路总结题目描述给定一个32位整数 num,你可以将一个数位从0变为1。请编写一个程序,找出你能够获得的最长的一串1的长度。示例 1:输入: num = 1775(110111011112)输出: 8示例 2:输入: num = 7(01112)输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse
2021-07-27 22:26:32 105
原创 面试题 04.02. 最小高度树
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 04.02. 最小高度树题目描述解题过程解题思路总结题目描述给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 来源:力扣(LeetC
2021-07-26 21:35:54 78
原创 面试题 03.05. 栈排序
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 03.05. 栈排序题目描述解题过程解题思路总结题目描述栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。示例1:输入:[“SortedStack”, “push”, “push”, “peek”, “pop”, “peek”][[],
2021-07-26 19:36:28 78
原创 面试题 03.04. 化栈为队
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 03.04. 化栈为队题目描述解题过程解题思路总结题目描述实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也就
2021-07-24 20:53:35 84
原创 JZ57 二叉树的下一个结点
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档JZ57 二叉树的下一个结点题目描述解题过程解题思路总结题目描述输入描述:输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点返回值描述:返回传入的子树根节点的下一个节点,后台会打印输出这个节点示例1输入:{8,6,10,5,7,9,11},8返回值:9示例2输入:{8,6,10,5,7,9,11
2021-07-23 20:27:24 74
原创 面试题 02.08. 环路检测
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档面试题 02.08. 环路检测题目描述解题过程解题思路总结题目描述面试题 02.08. 环路检测给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识
2021-07-22 22:13:15 76
原创 45. 跳跃游戏 II
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档45. 跳跃游戏 II题目描述解题过程解题思路总结题目描述给你一个非负整数数组 nums ,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: nums = [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后
2021-07-20 20:27:02 95
原创 23. 合并K个升序链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档23. 合并K个升序链表题目描述解题过程解题思路总结题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->
2021-07-19 20:41:59 77
原创 4. 寻找两个正序数组的中位数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档4. 寻找两个正序数组的中位数题目描述解题过程解题思路总结题目描述给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解
2021-07-19 19:54:30 85
原创 141. 环形链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档141. 环形链表题目描述解题过程解题思路总结题目描述给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 fa
2021-07-18 19:57:55 73
原创 136. 只出现一次的数字
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档136. 只出现一次的数字题目描述解题过程解题思路总结题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/prob
2021-07-18 19:41:58 68
原创 128. 最长连续序列
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档128. 最长连续序列题目描述解题过程解题思路总结题目描述给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。示例 2:输入:nums = [0,3,7,2,5,8,4,6,0,1
2021-07-18 19:31:21 249
原创 114. 二叉树展开为链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档114. 二叉树展开为链表题目描述解题过程解题思路总结题目描述给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。示例 1:输入:root = [1,2,5,3,4,null,6]输出:[1,null,2,null,3,null,4,null,5,
2021-07-18 19:04:50 71
原创 75. 颜色分类
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档75. 颜色分类题目描述解题过程解题思路总结题目描述给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nu
2021-07-17 21:24:20 72
原创 49. 字母异位词分组
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档49. 字母异位词分组题目描述解题过程解题思路总结题目描述给定一个字符串数组,将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指字母相同,但排列不同的字符串。示例 1:输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]示例 2:输入: strs = [""]输
2021-07-16 21:16:20 117
原创 39. 组合总和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档39. 组合总和题目描述解题过程解题思路总结题目描述给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入:candidates = [2,3,6,7], target = 7,所求解集为:
2021-07-15 20:20:15 73
原创 34. 在排序数组中查找元素的第一个和最后一个位置
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档34. 在排序数组中查找元素的第一个和最后一个位置题目描述解题过程解题思路总结题目描述给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[
2021-07-15 19:38:29 75
原创 567. 字符串的排列
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档567. 字符串的排列题目描述解题过程解题思路总结题目描述给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列。换句话说,第一个字符串的排列之一是第二个字符串的 子串 。示例 1:输入: s1 = “ab” s2 = “eidbaooo”输出: True解释: s2 包含 s1 的排列之一 (“ba”).示例 2:输入: s1= “ab” s2 = “eidboaoo”输出: False来源
2021-07-12 21:33:06 68
原创 剑指 Offer 51. 数组中的逆序对
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档剑指 Offer 51. 数组中的逆序对题目描述解题过程解题思路总结题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4]输出: 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof著作权归领扣网络所
2021-07-12 19:55:28 55
原创 33. 搜索旋转排序数组
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档33. 搜索旋转排序数组题目描述解题过程解题思路总结题目描述整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,
2021-07-09 20:12:32 85
原创 31. 下一个排列
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档31. 下一个排列题目描述解题过程解题思路总结题目描述实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。示例 1:输入:nums = [1,2,3]输出:[1,3,2]示例 2:输入:nums = [3,2,1]输出:[1,2,3]示例 3:输入:nums = [1
2021-07-09 19:54:33 196
原创 15. 三数之和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档15. 三数之和题目描述解题过程解题思路总结题目描述给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]示例 2:输入:nums = []输出:[]示例 3:输
2021-07-09 19:02:04 60
原创 11. 盛最多水的容器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档11. 盛最多水的容器题目描述解题过程解题思路总结题目描述给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1
2021-07-08 22:12:13 66
原创 ZJ19 万万没想到之抓捕孔连顺
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZJ19 万万没想到之抓捕孔连顺题目描述解题过程解题思路总结题目描述描述我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工,我提议我们在字节跳动大街的N个建筑中选定3个埋伏地点。为了相互照应,我们决定相距最远的两名特工间的距离不超过D。我特喵是个天才! 经过精密的计算,我们从X种可行的埋伏方案中选择了一种。这个方案万无一失,颤抖吧,孔连顺!……万万没想到,
2021-07-07 20:26:22 393
原创 ZJ17 水仙花数
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZJ17 水仙花数题目描述解题过程解题思路总结题目描述描述春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+3^3。 现在要求输出所有在m和n范围内的水仙花数。输入描述:输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。输出描述:对于每个测试实例,要求输出所有在
2021-07-06 21:57:41 81
原创 ZJ16 数列的和
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZJ16 数列的和题目描述解题过程解题思路总结题目描述描述数列的定义如下:数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。输入描述:输入数据有多组,每组占一行,由两个整数n(n<10000)和m(m<1000)组成,n和m的含义如前所述。输出描述:对于每组输入数据,输出该数列的和,每个测试实例占一行,要求精度保留2位小数。示例1输入:81 42 2输出:94.733.41解题
2021-07-06 21:17:12 83
原创 ZJ23 找零
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档ZJ23 找零题目描述解题过程解题思路总结题目描述Z国的货币系统包含面值1元、4元、16元、64元共计4种硬币,以及面值1024元的纸币。现在小Y使用1024元的纸币购买了一件价值为N (0 < N \le 1024)N(0<N≤1024)的商品,请问最少他会收到多少硬币?输入描述:一行,包含一个数N。输出描述:一行,包含一个数,表示最少收到的硬币数。示例1输入:200输出:17说明:花200,需要找
2021-07-06 20:54:28 118
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人