自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

解题:这里是一种后缀计算表达式,理解后非常好用,只要遇到数字就往栈里面push,只要遇到计算符号,就pop两个出来做运算,运算后的值也传入栈内,最后取出栈最后一个值即可。解题:栈操作,如果栈最后一个元素和当前遍历值匹配,则吐出消除。在完成所有重复项删除操作后返回最终的字符串。在 S 上反复执行重复项删除操作,直到无法继续删除。返回一个表示表达式值的整数。解题:使用栈来做匹配,匹配则pop来吐出数据。会选择两个相邻且相同的字母,并删除它们。给出由小写字母组成的字符串。,判断字符串是否有效。

2023-08-25 13:28:47 302 1

原创 代码随想录算法训练营DAY 9 | 232.用栈实现队列 225. 用队列实现栈

解题:这里会用到两个栈来做队列的实现,注意这里实现的栈只能使用数组的push和pop方法,首先会有一个进栈和一个出栈,进栈所有的值应该都要一个一个pop出来,再push进去出栈内,这样出栈只需要pop即可对应队列的操作。解题:这里可以用到一个队列的方式实现栈操作,用到的操作主要是push和shift,每次都遍历一次全队列,把最后一个值输出即可,其余的值重复push进队列内。请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(队列应当支持一般队列支持的所有操作(

2023-08-19 11:40:03 252

原创 代码随想录算法训练营DAY 8 | 344.反转字符串 541. 反转字符串II 剑指Offer 05.替换空格 151.翻转字符串里的单词 剑指Offer58-II.左旋转字符串

解题:这里是先转换成数组,判断当前数组有多少空格,然后新增数组的长度,从右往左(从尾向头)遍历,这里也是双指针的思路,左指针判断为空格时给右指针赋三个值,其他情况直接赋值。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。解题:这里做的还是比较简单,直接往字符串最后塞值,然后做切割,看别的思路好像不是这样,应该多学习其他的做法。解题:先处理掉多余空格,然后反转整个字符串,然后遍历遇到单词时单独反转,需要把反转单独抽离作为一个函数。不要给另外的数组分配额外的空间,你必须。

2023-08-18 23:28:10 228 1

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

解题:四数之和与三数之和的思路是相似的,多一个数就要在外层多套一层for循环,并且要注意,最外层的判断去重和截止的时候,不能直接判断numMap[j] > target,因为这个target值有可能是负数,必须加上一个numMap[j] > 0,才能完成判断(在这里卡了用例,调试比较久。解题:将四个数组两两分组,并统计两边的组里面能统计的和的数量,并记录在一个map里面,然后遍历另一个组的和,根据计算,获取第一个组的和数量,在result内输出。你返回所有和为 0 且不重复的三元组。

2023-08-02 22:37:29 249 1

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

解题:其实一开始这个快乐数其实逻辑没看懂,看了代码后,发现就是按照题目描述的这个思路来做,getSum用来获取传入一个值后获取最终的值,然后要注意如果sum一直重复的情况,所以用new Map() 来存储每一轮的sum值,如果重复了,直接return false,如果值为1,就返回true。解题:这道题其实很久以前就做过,正常的思路,先考虑哈希的数据格式,考虑用哪种数据类型,这里其实用对象比较好操作,key保留数组内的值,value是数组的下标值,这样去寻找对应的差值时就能直接拿到下标进行返回。

2023-08-01 20:01:08 106 1

原创 代码随想录算法训练营DAY 4 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,160. 链表相交,142.环形链表II

解题:这里需要计算倒数的节点,是要定位到需要删除节点的前一个节点,但又并不能像数组或者某些api方法那样去操作,所以需要两个指针,一个指针先走n步,后一个的指针再跟着一起走,这样两个指针的距离就固定了下来。解题:做这道题时要把握的是到底从哪里去操作那两个节点实现交换,实际上这里应该定位在需要操作的两个节点的前一个节点,如果是head,就需要在head之前定义一个虚拟头节点。解题: 思路也不难,主要是拿到两个链表的长度,以此来同步两个链表的尾端,再两个链表同时往前移动,当走到相同的节点时即相交。

2023-07-31 18:06:11 85 1

原创 代码随想录算法训练营DAY 3 | 203. 移除链表元素、707. 设计链表、206. 反转链表

val 是当前节点的值,next 是指向下一个节点的指针/引用。解题:这里的思路也不难理解,但是除了做判断头部的剪枝以外,还需要多创建三个变量来做单独存储,并在while里面转换,最后返回原来的尾部节点。解题:这道题卡了比较长的时间,主要是一些边界条件的限制做的不好,需要自己慢慢调试,思路不难理解,要注意一些必要的剪枝操作。正常的处理是把head部分单独处理,当设立了虚拟头节点后,可以把head节点也当作普通的链表中节点来处理,无需单独处理。,请你反转链表,并返回反转后的链表。给你一个链表的头节点。

2023-07-29 21:32:52 131

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

示例 1: 输入:nums = [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1,0,9,100] 排序后,数组变为 [0,1,9,16,100]示例 3:输入:target = 11, nums = [1,1,1,1,1,1,1,1] 输出:0。示例 2: 输入:nums = [-7,-3,2,3,11] 输出:[4,9,9,49,121]解释:子数组 [4,3] 是该条件下的长度最小的子数组。输出:[[1,2,3],[8,9,4],[7,6,5]]

2023-07-28 00:16:53 116 1

原创 代码随想录算法训练营DAY 1 | 704. 二分查找、27. 移除元素

例如,函数返回的新长度为 2 ,而 nums = [2,2,3,3] 或 nums = [2,2,0,0],也会被视作正确答案。解释:函数应该返回新的长度 5, 并且 nums 中的前五个元素为 0, 1, 3, 0, 4。输入: nums = [-1,0,3,5,9,12], target = 2 输出: -1。输入: nums = [-1,0,3,5,9,12], target = 9 输出: 4。输入:nums = [0,1,2,2,3,0,4,2], val = 2。元素的顺序可以改变。

2023-07-26 21:44:41 391 1

空空如也

空空如也

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

TA关注的人

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