自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 代码随想录算法训练营第十天补卡|232. 用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项

括号匹配是使用栈解决的经典问题,根据栈后进先出的思想。从左到右扫描括号,当扫描到最后一个左括号时,之后就是扫描右括号,类似消消乐一样,若栈顶元素有元素对应的右括号,即消除。做此题时需讨论三种情况:第一种情况:首先遍历完字符串可能出现栈不为空的情况,其实是因为出现了多余的左括号。第二种情况:出现左括号和右括号类型不匹配。第三种情况:字符串元素还没遍历完,栈已经为空了,其实就是左括号抵消完了,还有多余的右括号没有被抵消。就是右括号多余了,不匹配。

2024-07-22 01:08:58 953

原创 代码随想录算法训练营第九天补卡 151.翻转字符串里的单词、卡码网:55.右旋转字符串、28. 实现 strStr()、459.重复的子字符串

处理字符串可从三个方面考虑:①首先将字符串头部和尾部位置去除多余的空格,并且除了去除每个单词之前多余的空格 ②反转整条字符串 ③遍历字符串,使用两个指针用于记录每次遍历的单词对应的头和尾(即使用start指针指向单词的第一个字符和使用end指针指向单词最后一个字符),再将两个指针的区间范围进行字符串反转,即实现了每个单词的字符串反转。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。给定一个字符串,逐个翻转字符串中的每个单词。

2024-07-21 16:13:05 842

原创 代码随想录第八天补卡 344.反转字符串、 541. 反转字符串II、 卡码网:54.替换数字

想着先对2k字符的前k个字符进行反转(不足k个全部反转),再分析当前2k个字符之后的剩余长度,其实这样反而复杂化了,需要每次分析每k个字符的第一个指针的位置、第k个指针的位置、第2k个指针的位置,在一定条件下进行更新,就会有多个if条件,若对于边界问题没有处理好,还容易出现数组越界的问题。感觉就是写了一大堆代码逻辑,对于剩余字符的个数讨论还分了三种情况(剩余字符长度大于等于2k、剩余字符小于2k但大于等于k、剩余字符少于k个),其实只要讨论不足k个字符全部反转,满足k个字符长度则k个字符反转即可。

2024-07-15 17:56:01 634

原创 代码随想录第六天补卡 242.有效的字母异位词 leetCode349. 两个数组的交集 202. 快乐数 1. 两数之和

总结:做此题时把问题想的复杂化了,看到题目中所说数组中同一个元素在答案里不能重复出现,就想到使用IdentityHashMap存放多个相同的键值,然后对应的value为下标元素,把问题想的复杂化了。其实遍历元素,后续出现的下标肯定是不会重复的,每遍历一个元素判断当前元素的另一个被加数是否之前被记录过,若没有,则先把当前元素记录到map中,若记录过,即找到了和为目标值的两个整数,函数执行结束。想到了一种思路就是判断快乐数的过程中若平方和的结果重复出现,那么就是死循环,恰巧这就是解决本题的关键所在。

2024-07-12 14:55:58 530

原创 代码随想录训练营第三天 203.移除链表元素 707.设计链表 206.反转链表

总结:本题中可通过画图让自己前后逻辑更清晰些,同时要注意头结点的指针域要置为空,否则最后一个节点会指向原链表中的第二个节点,形成环形链表。示例 1: 输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]总结:链表的删除操作首先需要充分理解节点的结构含义,及指针域的作用,并且需要理解删除操作对应的图示。示例 3: 输入:head = [7,7,7,7], val = 7 输出:[]题意:删除链表中等于给定值 val 的所有节点。题意:反转一个单链表。

2024-07-06 10:10:39 282

原创 代码随想录算法训练营第二天 | LeetCode 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

总结:先尝试做题之后,使用最通俗易懂的暴力方法解决,之后观看公开课的内容,对比学习,能够加深印象。若不使用两个for循环进行暴力解的方法,只使用一个for循环,那么这个for循环的索引是不能用来表示某个子数组的初始位置的,否则还需要在循环体内再套入一个循环,遍历元素,才能得到一个满足要求的子数组,就跟双层for循环没有什么差别了。移动终止指针right,得到符合要求的窗口(即子数组),再压缩窗口的大小,移动left指针,进行left++操作,得到尽可能小的窗口长度。如果不存在符合条件的子数组,返回 0。

2024-07-04 22:34:44 269

原创 代码随想录算法训练营第一天 | LeetCode 704二分查找,27移除元素

示例 1: 给定 nums = [3,2,2,3], val = 3, 函数应该返回新的长度 2, 并且 nums 中的前两个元素均为 2。示例 2: 给定 nums = [0,1,2,2,3,0,4,2], val = 2, 函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。例如[1,1)是不合法的,区间里不可能包括1又不包括1,当left>=right,二分查找结束。快指针可以理解为快速遍历旧的数组,快速寻找target元素,在一定条件下,改变慢指针的值。

2024-07-03 16:03:47 199

空空如也

空空如也

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

TA关注的人

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