自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 DAY15

while循环中先定义size为当前即将被处理的queue的size,这个size就是上一个while循环中插进来的上一层的结点,因此在这个size的基础上依次处理就可以刚好让每一个结点的左右孩都被插进来并且自己的值可以被记录进vec,在每一个for循环结束后把这一层新产生的vec插进最后需要的result。在递归的前面加上swap,根节点传进去,交换根节点的左右,然后对根节点的左树的每一个结点进行调换,右树也是同样,后序遍历的话就是把最右的结点传进去再进行调换。

2023-01-30 21:34:45 80 2

原创 DAY14 二叉树

NULL,继续走左孩子,直到最后一个左孩子的左指针==NULL,return到最后一个左孩子,push这个左孩子的节点值,左孩子的右指针,==NULL,return,最后一个左孩子的程序全部走完,到左孩子的父亲,push这个的节点值,再是它的右孩子,重复,一直到根节点,push根节点的节点值,右孩子进入程序,此时这个第一个右孩子就相当于另外一棵树的根节点了,右孩子的左孩子进入程序,一直左孩子,最后一个左孩子的值push进去,返回父亲然后右孩子进去程序,重复,直到最后一个右孩子。对于整体来说是左右中。

2022-12-29 20:50:29 528

原创 DAY13 栈与队列

第一题 滑动窗口最大值:需要一个队列来承载这个窗口的数字,但是不能直接传进去,这样的话就跟快慢指针没区别,达不到及时性的拿到最大值,就新建一种队列,这个队列push数据的时候新加入的一个数据要不断跟前面的数据,也就是back()进行对比,必须要让出口处的数字比它大,这样就能保证每一个新的数字加进来时候。前面出口处的数字一定是此时最大的,pop数据的时候,当容器不为空的时候,且要弹出的数据和头部的数据一样时候就把它弹出去,这么操作下来就让去最大值编程取头部值具体使用的时候就是创建这样的一个容器,前面k个不用特

2022-12-07 20:08:54 1142

原创 DAY11 栈与队列

第一题 括号匹配性:首先,如果括号数为奇数肯定不对然后创建一个栈来存放符号,因为要匹配一定是右括号会和最近的做符号消消乐,就符合栈的特点,但是如果s的符号是什么直接就输入最后还要三个if条件,很复杂,就搞成左符号对应的右符号,来一个(就输入),这样后面最先到来的右符号就能和栈的顶部符号看是不是一样的,如果一样就把这个顶部符号消除看在前面的一个左符号能不能找到对应的右符号,这样全部遍历下来一遍如果都没问题就剩下最后看这个栈是不是空的,空的话就说明所有的左符号都找到了正确位置的右符号,全都消消乐了,不是空的就说

2022-12-06 15:49:30 1163

原创 DAY10 栈和队列

第一题,用栈实现队列:队列是先进先出,栈是先进后出,单个的栈元素先进去了肯定不能先出来,而如果是两个栈的话,就可以让一个栈区另一个栈,这样整个的栈里的元素就实现了弹出元素,类似于队列的顺序。两个栈一个是入栈一个是出栈,定义出他俩, stack stIn; stack stOut;入队列就是先把数据放进入栈,这个就是void push(int x) { stIn.push(x); }出栈就是把出栈中的第一个数据弹出来,所以要把出栈先清空,首先判断出栈是不是空

2022-12-05 16:33:39 1262

原创 day8 字符串

第一题,反转字符串:用一个循环解决,交换字符串两端的数据,到中间停止,如果是偶数就是刚好,奇数的话也就是ij重合相当于没有交换也是刚好的第二题,反转字符串2:因为是按照一定的规律来把字符串分割成一段一段的所以可以用i+=2*k解决,但是要注意最后剩下的数据大小的区别来选择反转的内容,用begin()和end()来界定范围,这里相当于用的是迭代器不能直接用索引第三题,替换空格键:每一次都把空格后面的数组往后面改而需要新建一个string来安放数据,这里要注意的是插入字符串需要用.append(),用push_

2022-12-05 11:29:48 1283

原创 day7 哈希表

第一题:在四个数组中分别出一个数字,相加等于0,如果四个循环的话就会n^4的时间复杂度,就让两个数组相加了放进一个容器,然后另外两个数组的分别遍历相加,如果后面的容器加上前面的容器等于0,就count=这个数出现过的次数,这道题的精髓在unordered-map的使用,unordered-map[key]返回的是key映射的value。

2022-11-30 11:31:02 1638

原创 day6哈希表

第一题:还没太搞明白哈希表,但是这道题很明显,就是设置一个数组,按照ascii码值来每次出现一个字母,就在对应位置上加一,第二个数组一样的原理但是是对应位置减一,这样最后如果数组为0就说明互相抵消了。第三题:取得数值单位上的数据的方法就是先取余再除以10,用while来做,如果得出的数曾经出现过肯定就不行了就死循环了,所以可以用这种哈希表确认这个数据出现过没。第二题:重点是一个for循环,意思是遍历nums里的数据。

2022-11-24 16:41:36 1746

原创 day4 链表

第三题:最开始想用倒过来的方法但是做不了,题解中的意思就是让两个链表尾部对齐,这就需要先算出两条链表的长度,长的那一条就让头结点移动长度差值,然后开始对比,但是我做的时候发现分开计算if条件很麻烦而且一直错,使用一个交换函数来让长度和指针实际上的内容变化,这样就可以让长一点的时钟在前面。第一题:p1p2是一个用来记录的,不要参与进去,一直用cur的移动来做到交换。

2022-11-21 21:54:57 1897

原创 day3翻转链表

/最后一步调用了这个函数,退出了函数,没有调用下面的翻转函数,所以递归就结束了,而在翻转函数后面的程序也不会被执行,所以后面的几行是从倒数第二个开始的。第一题:虚拟头结点并不是真的虚拟,只是构建了一个新的头结点,让之前的头结点可以成为可以被操作的普通节点,但是在最后一步,因为不知道有没有对head进行过操作,所以要提前对head进行保存。第三题:指针法:在每一个循环中只是改变前面一个指针的指向,所以在最后一步cur指向了null,prev变成了最后一个节点,而cur就可以作为循环终止的条件。

2022-11-21 16:34:12 1944 1

空空如也

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

TA关注的人

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