xushiyu1996818
码龄7年
关注
提问 私信
  • 博客:2,089,245
    社区:178
    2,089,423
    总访问量
  • 932
    原创
  • 1,903,107
    排名
  • 372
    粉丝
  • 3
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-03-18
博客简介:

许诗宇的博客

博客描述:
java web开发,看完希望大家左边点一个赞,关注一波,谢谢。 如需联系请加qq 2943699258,并注明姓名与原因。个人的代码库为 https://gitee.com/xushiyu
查看详细资料
个人成就
  • 获得754次点赞
  • 内容获得171次评论
  • 获得0次收藏
  • 代码片获得2,031次分享
创作历程
  • 27篇
    2023年
  • 81篇
    2022年
  • 121篇
    2021年
  • 251篇
    2020年
  • 295篇
    2019年
  • 163篇
    2018年
成就勋章
TA的专栏
  • 总结
    25篇
  • 经验
  • leetcode总结
    16篇
  • bug-eclipse
    6篇
  • bug-git
    2篇
  • bug-hibernate
    6篇
  • bug-html
    3篇
  • bug-java
    4篇
  • bug-java web
    3篇
  • bug-jquery
    5篇
  • bug-js
    9篇
  • bug-jstl
    2篇
  • bug-linux
    1篇
  • bug-mybatis
    3篇
  • bug-mysql
    8篇
  • bug-spring boot
    6篇
  • bug-springmvc
    1篇
  • bug-struts1
    1篇
  • bug-前端大杂烩
    1篇
  • 数据结构
    30篇
  • 数据结构-数组
    52篇
  • 数据结构-字符串
    27篇
  • 数据结构-树
    43篇
  • 数据结构-哈希表
    8篇
  • 数据结构-双指针
    6篇
  • 数据结构-链表
    28篇
  • 数据结构-堆
  • 数据结构-图
    13篇
  • 数据结构-二叉搜索树
    6篇
  • 数据结构-队列
    1篇
  • 数据结构-栈
    9篇
  • 算法
    22篇
  • 算法-二分查找
    3篇
  • 算法-动态规划
    29篇
  • 算法-数学
    35篇
  • 算法-深度优先搜索
    1篇
  • 算法-广度优先搜索
    1篇
  • 算法-回溯算法
    19篇
  • 算法-贪心算法
    2篇
  • 算法-位运算
    10篇
  • 算法-排序
    15篇
  • 算法-分治算法
    3篇
  • 算法-搜索
    17篇
  • leetcode-初级
    51篇
  • leetcode-中等
    80篇
  • leetcode-困难
    54篇
  • leetcode
    185篇
  • 剑指offer
    47篇
  • ajax
    2篇
  • docker
    2篇
  • Dubbo
    8篇
  • filebeat logstash elasticsearc
    3篇
  • hibernate
    6篇
  • java
    55篇
  • java io
    37篇
  • java nio
    37篇
  • java web
    4篇
  • java多线程
    67篇
  • java容器
    37篇
  • java虚拟机
    23篇
  • java其他jar包
    1篇
  • jquery
    6篇
  • js
    12篇
  • jsoup
    2篇
  • Kafka
    4篇
  • linux
    6篇
  • mybatis
    27篇
  • mysql
    52篇
  • redis
    38篇
  • shell
    9篇
  • spring
    28篇
  • spring boot
    10篇
  • spring cloud
    20篇
  • springmvc
    18篇
  • ZooKeeper
    6篇
  • 正则表达式
    5篇
  • 分布式
    6篇
  • 其他框架
    5篇
  • 系统架构
    14篇
  • 操作系统
    4篇
  • 源码分析
    42篇
  • 消息队列
    13篇
  • 前端
    15篇
  • 计算机网络
    42篇
  • 设计模式
    28篇
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

leetcode-063-不同路径2

否则网格 (i,j) 可以从网格 (i−1,j) 或者 网格 (i,j−1) 走过来,因此走到该格子的方法数为走到网格 (i - 1, j) 和网格 (i, j - 1)的方法数之和,即 dp[i, j] = dp[i - 1, j] + dp[i, j - 1]。第 1 行的格子只有从其左边格子走过去这一种走法,因此初始化 dp[0][j] 值为 1,存在障碍物时为 0。如果网格 (i,j) 上有障碍物,则 dp[i][j] 值为 0,表示走到该格子的方法数为 0;解法1(成功,0ms,极快)
原创
发布博客 2023.07.02 ·
689 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-061-旋转链表

然后再向后移动到null,得到rightTail。然后rigthtail.next指向head,leftTail.next指向null即可。先获取链表的长度,然后从头部移动length-k-1次,得到head,leftTail,rightHead,解法1(成功,0ms,极快)
原创
发布博客 2023.07.02 ·
591 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-060-排列序列

常见的做法是:代入一个具体的数值,认真调试。把候选数放在一个 有序列表 里,从左到右根据「剩下的数的阶乘数」确定每一位填谁,公式 k / (后面几位的阶乘数) 的值 恰好等于候选数组的下标;如果 k 小于等于这一个分支将要产生的叶子结点数,那说明所求的全排列一定在这一个分支将要产生的叶子结点里,需要递归求解。一句话题解:以下给出了两种方法,思路其实是一样的:通过 计算剩余数字个数的阶乘数,一位一位选出第 k 个排列的数位。由于这里考虑的是下标,第 k 个数,下标为 k - 1,一开始的时候,k--。
原创
发布博客 2023.07.02 ·
586 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-059-螺旋矩阵2

如果 left<right 且 top<bottom,则从右到左填入下侧元素,依次为 (bottom,right−1) 到 (bottom,left+1),以及从下到上填入左侧元素,依次为 (bottom,left) 到 (top+1,left)。填完当前层的元素之后,将 left 和 top 分别增加 1,将 right 和 bottom 分别减少 1,进入下一层继续填入元素,直到填完所有元素为止。可以将矩阵看成若干层,首先填入矩阵最外层的元素,其次填入矩阵次外层的元素,直到填入矩阵最内层的元素。
原创
发布博客 2023.06.10 ·
676 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-058-最后一个单词的长度

从最后一个字母开始继续反向遍历字符串,直到遇到空格或者到达字符串的起始位置。遍历到的每个字母都是最后一个单词中的字母,因此遍历到的字母数量即为最后一个单词的长度。由于字符串中至少存在一个单词,因此字符串中一定有字母。首先找到字符串中的最后一个字母,该字母即为最后一个单词的最后一个字母。题目要求得到字符串中最后一个单词的长度,可以反向遍历字符串,寻找最后一个单词并计算其长度。解法1(成功,1ms,较慢)
原创
发布博客 2023.06.09 ·
89 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-057-插入区间

然后,再看右边,这里有个情况,就是 当intervals[i][0] > newInterval[1]说明newInterval没有和任何区间重合,比如intervals = [[1,3],[6,9]], newInterval = [4,5],直接插入即可.首先,左边,当newInterval[0] > intervals[i][1]说明没有和该区间没有重叠部分,继续遍历下一个区间,比如intervals = [[1,3],[6,9]], newInterval = [2,5]下面就要考虑重叠情况了。
原创
发布博客 2023.06.08 ·
457 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-052-n皇后2

回溯的具体做法是:依次在每一行放置一个皇后,每次新放置的皇后都不能和已经放置的皇后之间有攻击,即新放置的皇后不能和任何一个已经放置的皇后在同一列以及同一条斜线上。显然,每个皇后必须位于不同行和不同列,因此将 N 个皇后放置在 N×N 的棋盘上,一定是每一行有且仅有一个皇后,每一列有且仅有一个皇后,且任何两个皇后都不能在同一条斜线上。为了降低总时间复杂度,每次放置皇后时需要快速判断每个位置是否可以放置皇后,显然,最理想的情况是在 O(1) 的时间内判断该位置所在的列和两条斜线上是否已经有皇后。
原创
发布博客 2023.06.07 ·
583 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-051-n皇后

我们可以先不考虑每一个皇后之间不能相互攻击的条件,如果要求每行只能放一个皇后,我们能否穷举出所有的放置方法?对于每一个格子进行计算分析能不能放置皇后,最后的代码实现会跳过这些格子,把皇后放在合法的位置上。具体的,在每一个位置放置皇后,然后调用 backtrack 函数,进入下一行进行穷举进行判断。因为我们是一行一行从上向下放置皇后,所以下方,左下方和右下方不会有皇后(还没放皇后)。因为我们的逻辑是每一行只放一个皇后,所以这个皇后的左边和右边不需要进行检查了。N 皇后问题也是一个暴力穷举的问题。
原创
发布博客 2023.05.31 ·
434 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-047-全排列2

但是这个相等条件有两种可能 一种是,1 1‘ 2,也就是选择完1之后再选择第二个1,两个元素虽然重复,但是第二个元素是前一个元素的下一层,这时是没有问题的。另一种是之前的 同层 分支已经有 1 1‘ 2了,这次的选择是 1‘ 1 2。那就说明是重复分支。具体区分的办法是 nums[i-1] 的used状态是被选择的,那么说明当前的nums[i] 是 nums[i-1]的下一层路径。否则如果 nums[i-1] 的状态是没被选择的,那么说明当前 的nums[i] 是nums[i-1] 同层路径。
原创
发布博客 2023.05.20 ·
112 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-045-跳跃游戏2

以此类推,不断地在到达当前步的边界 end 前更新下一步能够到达的最远距离nextMaxEnd 作为下一步的边界,更新途中一旦到达当前步的边界 end,就表示当前步已经贪心地走完了,必须跳下一步了,step++,并且下一步能够到达的最远边界我们已经在之前比较出来了,直接更新即可:end = nextMaxEnd。到这里,其实就可以明白为什么不用遍历终点了,因为边界 end 有可能是终点,那 end 一旦到了终点其实也就到了,但是我们的代码逻辑是到达 end 就得步数加一,其实这是没必要的。
原创
发布博客 2023.05.14 ·
122 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-043-字符串相乘

如果num 1和num 2都不是0,则可以通过模拟「竖式乘法」的方法计算乘积。从右往左遍历乘数,将乘数的每一位与被乘数相乘得到对应的结果,再将每次得到的结果累加。这道题中,被乘数是num 1,乘数是num 2。num1[i] x num2[j] 的结果为 tmp(位数为两位,"0x""0x", "xy""xy" 的形式),其第一位位于 res[i+j],第二位位于 res[i+j+1]。该算法是通过两数相乘时,乘数某位与被乘数某位相乘,与产生结果的位置的规律来完成。需要注意的是,num 2。
原创
发布博客 2023.05.14 ·
88 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-040-组合总和2

很容易想到的方案是:先对数组 升序 排序,重复的元素一定不是排好序以后相同的连续数组区域的第 11 个元素。也就是说,剪枝发生在:同一层数值相同的结点第 22、33 ... 个结点,因为数值相同的第 11 个结点已经搜索出了包含了这个数值的全部结果,同一层的其它结点,候选数的个数更少,搜索出的结果一定不会比第 11 个结点更多,并且是第 11 个结点的子集。这里我们使用和第 39 题和第 15 题(三数之和)类似的思路:不重复就需要按 顺序 搜索, 在搜索的过程中检测分支是否会出现重复结果。
原创
发布博客 2023.05.08 ·
675 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-037-解数独

尝试去填充数组,只要行,列, 还有 3*3 的方格内 出现已经被使用过的数字,我们就不填充,否则尝试填充。声明布尔数组,表明行列中某个数字是否被使用了, 被用过视为 true,没用过为 false。我们尝试填充,如果发现重复了,那么擦除重新进行新一轮的尝试,直到把整个数组填充完成。类似人的思考方式去尝试,行,列,还有 3*3 的方格内数字是 1~9 不能重复。数独首先行,列,还有 3*3 的方格内数字是 1~9 不能重复。如果填充失败,那么我们需要回溯。初始化布尔数组,表明哪些数字已经被使用过了。
原创
发布博客 2023.05.07 ·
140 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-035-搜索插入位置

情况 1:如果当前 mid 看到的数值严格小于 target,那么 mid 以及 mid 左边的所有元素就一定不是「插入元素的位置」,因此下一轮搜索区间是 [mid + 1..right],下一轮把 left 移动到 mid + 1 位置,因此设置 left = mid + 1;说明:上面的两点中,「情况 2」其实不用分析得那么细致, 因为只要「情况 1」的区间分析是正确的,「情况 2」一定是「情况 1」得到的区间的反面区间。根据示例,分析题目要我们返回的「插入元素的位置」是什么。
原创
发布博客 2023.05.06 ·
518 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-030-串联所有单词的子串

初始化 differ 时,出现在窗口中的单词,每出现一次,相应的值增加 1,出现在 words 中的单词,每出现一次,相应的值减少 1。窗口移动时,若出现 differ 中值不为 0 的键的数量为 0,则表示这个窗口中的单词频次和 words 中单词频次相同,窗口的左端点是一个待求的起始位置。不同的是第 438 题的元素是字母,而此题的元素是单词。然后进行回溯,对每个下标,进行dfs,碰到dict[index][i]为true的,wordsNum[i]--,如果回溯到wordsNum全为0,代表全部对应。
原创
发布博客 2023.05.06 ·
117 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-027-移除元素

如果左指针 left 指向的元素等于 val,此时将右指针 right 指向的元素复制到左指针 left 的位置,然后右指针 right 左移一位。如果赋值过来的元素恰好也等于 val,可以继续把右指针 right 指向的元素的值赋值过来(左指针 left 指向的等于 val 的元素的位置继续被覆盖),直到左指针指向的元素的值不等于 val 为止。如果右指针指向的元素不等于 val,它一定是输出数组的一个元素,我们就将右指针指向的元素复制到左指针位置,然后将左右指针同时右移;解法1(成功,0ms,极快)
原创
发布博客 2023.05.05 ·
772 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

leetcode-025-k个一组翻转链表

特殊情况,当翻转部分长度不足 k 时,在定位 end 完成后,end==null,已经到达末尾,说明题目已完成,直接返回即可。初始需要两个变量 pre 和 end,pre 代表待翻转链表的前驱,end 代表待翻转链表的末尾。翻转链表,然后将三部分链表连接起来,然后重置 pre 和 end 指针,然后进入下一次循环。经过k此循环,end 到达末尾,记录待翻转链表的后继 next = end.next。需记录翻转链表前驱和后继,方便翻转完成后把已翻转部分和未翻转部分连接起来。解法1(成功,0ms,极快)
原创
发布博客 2023.05.05 ·
91 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-024-两两交换链表中的节点

用 head 表示原始链表的头节点,新的链表的第二个节点,用 newHead 表示新的链表的头节点,原始链表的第二个节点,则原始链表中的其余节点的头节点是 newHead.next。如果链表中至少有两个节点,则在两两交换链表中的节点之后,原始链表的头节点变成新的链表的第二个节点,原始链表的第二个节点变成新的链表的头节点。两两交换链表中的节点之后,新的链表的头节点是 dummyHead.next,返回新的链表的头节点即可。将链表根据节点的位置分成链表1和链表2,原来的变成12121,然后再合并,2121。
原创
发布博客 2023.05.02 ·
676 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-018-四数之和

在确定第一个数之后,如果 nums[i]+nums[n−3]+nums[n−2]+nums[n−1]<target,说明此时剩下的三个数无论取什么值,四数之和一定小于 target,因此第一重循环直接进入下一轮,枚举 \textit{nums}[i+1]nums[i+1];在确定前两个数之后,如果 nums[i]+nums[j]+nums[n−2]+nums[n−1]<target,说明此时剩下的两个数无论取什么值,四数之和一定小于 target,因此第二重循环直接进入下一轮,枚举 nums[j+1]。
原创
发布博客 2023.05.01 ·
667 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

leetcode-016-最接近的三数之和

同时判断 sum 与 target 的大小关系,因为数组有序,如果 sum > target 则 end--,如果 sum < target 则 start++,如果 sum == target 则说明距离为 0 直接返回结果。根据 sum = nums[i] + nums[start] + nums[end] 的结果,判断 sum 与目标 target 的距离,如果更近则更新结果 ans。在数组 nums 中,进行遍历,每遍历一个值利用其下标i,形成一个固定值 nums[i]
原创
发布博客 2023.04.25 ·
106 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多