努力学Java的叶子
码龄2年
关注
提问 私信
  • 博客:24,615
    24,615
    总访问量
  • 30
    原创
  • 132,340
    排名
  • 466
    粉丝
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2022-11-22
博客简介:

2201_75378283的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    314
    当月
    0
个人成就
  • 获得627次点赞
  • 内容获得19次评论
  • 获得296次收藏
创作历程
  • 30篇
    2024年
成就勋章
兴趣领域 设置
  • Java
    eclipsespring
  • 后端
    mvcsql后端中间件
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

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

代码随想录算法训练营Day12 | 239.滑动窗口最大值、347.前K个高频元素

用单调队列来实现,把最大值放在出口位置,如果出现了比当前最大元素还要大的元素,就把前面的元素全部弹出,直到队列为空,然后再将新元素都添加到队列中。这样可以保证队列的元素保持单调递减,同时保证队列头部始终是当前滑动窗口的最大值。为什么队列中要存放数组下标的值而不是直接存储数值,因为要判断队首的值是否在窗口范围内,由数组下标取值很方便,而由值取数组下标不是很方便。尤其注意,本题使用的是双向队列,除了队头元素,其余元素都是从入队方向进入的。是滑动窗口的大小,该方法返回每个窗口中的最大值数组。
原创
发布博客 2024.05.05 ·
1000 阅读 ·
28 点赞 ·
0 评论 ·
6 收藏

代码随想录算法训练营Day11 | 20.有效的括号、1047.删除字符串中的所有相邻重复项、150.逆波兰表达式求值

它允许在队列的两端进行插入和删除操作,因此可以像队列一样从一端插入元素(尾部),从另一端删除元素(头部),也可以像栈一样从一端插入和删除元素(顶部)。无论有多少种排列,对不上的情况也就是三种:左括号富余,右括号富余,括号匹配不上,至于做法,我们应该在遇到左括号的时候,往里面添上相应的右括号,当遇到右括号的时候删除栈里相应的右括号,最后如果栈内元素为零,说明符号是顺序相同而且相互匹配的栈先进后出的。如果当前字符是右括号,并且栈为空(没有相应的左括号),或者栈顶的括号与当前字符不匹配,则返回。
原创
发布博客 2024.04.28 ·
940 阅读 ·
20 点赞 ·
0 评论 ·
15 收藏

代码随想录算法训练营Day10 | 232.用栈实现队列、225. 用队列实现栈

元素出栈指的是从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。在入栈操作中,我们使用了一个辅助队列来保持栈顺序的正确性,并且在需要时交换了主队列和辅助队列的引用。解题思路:定义两个栈,一个入栈一个出栈,由于队列是先进先出的,要想通过栈实现,我们可以再定义一个栈,把输入栈的元素再通过输出栈重新输出,顺序就会和队列一模一样。题目思考:因为队列就像一个管道,怎么进去就怎么出来,所以我们要用两个队列,其中一个负责输出,一个负责储存,这样才能模拟实现栈的功能。
原创
发布博客 2024.04.27 ·
2489 阅读 ·
50 点赞 ·
0 评论 ·
42 收藏

代码随想录算法训练营Day9 | 双指针总结归纳:

3.链表中,翻转一个链表是用的双指针改变链表指针的指向,直至将链表反转,而找到一个环,是看快指针能否“追上”慢指针,如果有环,则两个指针一定会相遇。1.对于数组而言,数组上的元素不能做到删除,只能进行覆盖,通过两个指针在一个for循环下完成两个for循环的工作,提升了效率。2.字符串中定义两个指针(也是索引下标),分别从字符串的前后进行遍历并交换元素。4.N数之和用的是双指针,用一个for循环解决两个for循环所需要解决的问题。
原创
发布博客 2024.04.26 ·
260 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

代码随想录算法训练营Day8 | ● 344.反转字符串● 541. 反转字符串II● 54.替换数字● 151.翻转字符串里的单词● 55.右旋转字符串

这段代码利用了双指针的思想,从字符串的两端开始,逐步向中间移动,交换对应位置上的字符,从而实现了字符串的翻转。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。在确定了要反转的子字符串的起始和结束位置之后,使用双指针法对该子字符串进行反转操作。解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]输入:["h","e","l","l","o"]
原创
发布博客 2024.04.25 ·
1187 阅读 ·
38 点赞 ·
0 评论 ·
29 收藏

代码随想录算法训练营Day7 | 454.四数相加、383.赎金信、15.三数之和、18.四数之和

454.四数相加、383.赎金信、15.三数之和、18.四数之和(Java详解)
原创
发布博客 2024.04.23 ·
699 阅读 ·
22 点赞 ·
0 评论 ·
0 收藏

代码随想录算法训练营Day6 | 242.有效的字母异位词 ●349. 两个数组的交集 ● 202. 快乐数● 1. 两数之和

基础:1.哈希表是根据进行的数据结构,时间复杂度是O(1),也就是通过数组的索引下标,直接访问数组中的元素List, Set, Queue, Map 区别?List(对付顺序的好帮手): 存储的元素是有序的、可重复的。Set(注重独一无二的性质): 存储的元素不可重复的。Queue(实现排队功能的叫号机): 按特定的排队规则来确定先后顺序,存储的元素是有序的、可重复的。
原创
发布博客 2024.04.22 ·
1129 阅读 ·
21 点赞 ·
0 评论 ·
22 收藏

代码随想录算法训练营Day4 | 24.两两交换链表中的节点、19删除链表中的第N个节点、链表相交、142.环形链表

24.两两交换链表中的节点、19删除链表中的第N个节点、链表相交、142.环形链表 Java详解
原创
发布博客 2024.04.20 ·
1117 阅读 ·
36 点赞 ·
0 评论 ·
26 收藏

代码随想录算法训练营Day3 | 203.移除链表、707.设计链表、206.反转链表

在循环中,每次都将 cur.next 指针指向前一个节点 pre,然后更新 pre 和 cur 指针为当前节点,temp 指针为当前节点的下一个节点。题目思路:创建一个虚拟头节点以及两个指针,如果遍历到匹配的元素,则跳过这个节点,虚拟头节点的下一个就是真正的头节点,创建虚拟头节点就是预防原来的头节点就是我们需要的节点的这种情况。必须先改变pre的值,再改变cur的值,否则会因为cur的值先改变,pre就无法移动到cur的位置。赋值时,如果需要将虚拟头节点与链表的头节点连接起来,那么是必须要将链表的头节点。
原创
发布博客 2024.04.19 ·
1115 阅读 ·
37 点赞 ·
1 评论 ·
29 收藏

代码随想录算法训练营Day2 | 977.有序数组的平方、209.长度最小的子数组、59.螺旋数组

977.有序数组的平方、209.长度最小的子数组、59.螺旋数组(Java详解)
原创
发布博客 2024.04.18 ·
2328 阅读 ·
54 点赞 ·
0 评论 ·
26 收藏

代码随想录算法训练营Day1 : 704.二分查找、27.移除元素

算法:二分查找,移除元素
原创
发布博客 2024.04.17 ·
2043 阅读 ·
42 点赞 ·
1 评论 ·
18 收藏

代码随想录算法练习Day15:快乐数

把一个数计算后的值放到一个集合中去,如果出现重复出现的数字,则证明出现了环,那就永远不可能会得到1.因为我们要随时检查新的数字是否在以前出现过,所以我们要用集合进行查询,所花费的时间会短于数组。编写一个算法来判断一个数。
原创
发布博客 2024.04.16 ·
466 阅读 ·
15 点赞 ·
1 评论 ·
6 收藏

代码随想录算法练习Day14:两个数组的交集

哈希表是一种高效的数据结构,能够以常量时间复杂度 O(1) 进行元素的查找和插入操作。这意味着无论集合中有多少个元素,查找和插入操作所需的时间都是相同的,因此在大量数据的情况下,首先通过条件语句判断了传入的两个数组是否为空,如果其中任意一个为空,则直接返回一个长度为0的数组,表示交集为空。集合中添加已经存在的元素时,添加操作不会产生任何效果,因为集合中已经存在相同的元素了。最后定义新数组时的取值范围,是集合的size而不是集合的length噢。集合中的元素,并将其逐个赋值给数组。,用于存储数组中的元素。
原创
发布博客 2024.04.15 ·
523 阅读 ·
14 点赞 ·
1 评论 ·
6 收藏

代码随想录算法练习Day13:有效的字母异位词

异位词也就是判断两个字符串中所含的元素是否相同,位置不同也没关系,定义一个数组,因为题目中给出的字符只有小写字母,把字符映射到哈希表的索引下标上,遍历第一个字符串的时候,把出现的字符索引加一,再遍历第二个字符串,把遇见的字符减一,如果这个数组的所有元素都是零的话,就说明两个字符串是字母异位词。这个算法的时间复杂度是 O(n),其中 n 是字符串的长度,因为需要遍历两个字符串。整体的空间复杂度为 O(1),因为使用了一个固定长度的数组。别忘了charAt方法和求长度的括号噢。3.增强for循环语句用来比较。
原创
发布博客 2024.04.14 ·
416 阅读 ·
14 点赞 ·
1 评论 ·
6 收藏

代码随想录算法练习Day12:环形链表

因为快指针每次都走两步,所以快指针走过的节点数是慢指针的两倍,也就是(x+y)*2 = x+y+n(y+z),因为要找的是入口值,也就是图中x的长度,最后化简可得到x = (n-1)(y+z)+z。判断是否有环:定义两个指针,让快指针每次走两步,慢指针每次走一步,当快指针走到环内部之后,慢指针才会进入环内,此时是快指针在追慢指针,但是对于慢指针来说,快指针是一步一步在追它的,所以存在环形结构 话,两个指针是一定会相遇的。2.快指针一定是至少转了一圈才能追上慢指针的,所以n一定大于等于1。
原创
发布博客 2024.04.13 ·
672 阅读 ·
22 点赞 ·
0 评论 ·
9 收藏

代码随想录算法练习Day11:链表相交

题目:给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null。这段代码的核心思想是通过先将较长链表的指针先向后移动到与较短链表的起点对齐,然后同时遍历两个链表,找到第一个相同的节点即为交点。3.在遍历之前,为了让我们的表达更加清楚,我们可以再次声明让cur指向head。定义两个指针,分别遍历两链表,如果指针有相同的,则说明有相交的节点。2.必须让两条链表比较时的长度是一样的。1.我们要比较的是指针相等而非链表中节点的值相等,
原创
发布博客 2024.04.12 ·
592 阅读 ·
13 点赞 ·
0 评论 ·
4 收藏

代码随想录算法练习Day10:删除链表的倒数第N个节点

假如要删除倒数第n个节点,则让快指针先走n+1步(+1是为了让慢指针指向被删除节点的前一个),再让快慢指针同时走,当快指针指向空时,慢指针就走到被删除节点的前一个了。要找到删除的节点,就要知道它的上一个节点是什么,我开始的想法是把链表反转过来,直接删除第n个节点,但是这个操作就复杂了,可以直接使用。指针的下一个节点指针指向下下个节点,即删除了倒数第 n 个节点。最后,返回虚拟头节点的下一个节点,即链表的头节点,完成了删除操作。,这样可以确保链表不会因为删除节点而丢失头节点。指针指向链表的头节点。
原创
发布博客 2024.04.11 ·
688 阅读 ·
11 点赞 ·
1 评论 ·
10 收藏

代码随想录算法练习Day9:两两交换链表中的节点

1.注意循环的条件,这里巧妙地将链表个数为偶数和奇数的情况都囊括了,当链表个数为偶数时,如果cur的下一个为空,则停止循环,如果链表个数为奇数时,则还需要同时满足cur下一个的下一个为空才会停止循环,这也是为什么只能用和而不能用或。解题思路:利用虚拟头节点,用引用记录要交换的值,以防止后续找不到相应的节点了。分别保存当前节点和当前节点的下一个节点,即需要交换的两个节点。分别保存当前节点的下一个节点和下下个节点,以备后续使用。,即将交换后的节点连接到链表的后续节点。指针,即交换后链表的头节点。
原创
发布博客 2024.04.10 ·
764 阅读 ·
15 点赞 ·
1 评论 ·
8 收藏

代码随想录算法练习Day8:反转链表

必须先改变pre的值,再改变cur的值,否则一旦cur的值先改变,pre就无法移动到cur的位置。方法反转以当前头节点的下一个节点为起始的子链表,并将返回的反转后的链表的头节点赋值给。其实只需要改变链表的next指针的指向,直接将链表反转 ,而不用重新定义一个新的链表。如果再定义一个新的链表,实现链表元素的反转,其实这是对内存空间的浪费。,将当前节点与下一个节点的联系断开,从而完成了当前节点的位置更新。指针指向当前头节点,完成了当前节点和下一个节点的反转操作。: 这一行将当前头节点的下一个节点的。
原创
发布博客 2024.04.09 ·
858 阅读 ·
29 点赞 ·
0 评论 ·
5 收藏

代码随想录算法练习Day7:设计链表

把这道题拿下,那链表的基本操作就没问题了。4.第n个节点前插入节点。
原创
发布博客 2024.04.08 ·
294 阅读 ·
3 点赞 ·
0 评论 ·
1 收藏
加载更多