- 博客(239)
- 收藏
- 关注
原创 150. 逆波兰表达式求值
中序表达式:(1+2)*(3+4)转化为二叉树的格式后缀表达式其实就是二叉树的后序遍历,后序遍历的顺序是:左右中中序表达式看着舒服但是有一个明显的问题:如果想要正确地计算这个表达式的结果一定要加括号,不加括号的结果不是预期的结果,但是后缀表达式就不需要加任何括号,从头到尾遍历就可以计算出正确的想要的结果,所以后缀表达式更方便计算机做运算。计算机顺序处理不用担心优先级。计算机如何去顺序处理这个字符串就能得到我们想要的结果其实就是用栈这个数据结构。用栈来解决逆波兰表达式的计算过程。
2024-06-21 16:56:54 191
原创 1047. 删除字符串中的所有相邻重复项
括号匹配相邻的括号左括号右括号匹配,做一个消除的动作,或者做一个匹配的动作。这题是如果相邻的字母相同做一个消除的一个动作。这种消除规则下用栈很合适。从栈中弹出剩余元素,此时是字符串ac,因为从栈里弹出的元素是倒序的,所以再对字符串进行反转一下,就得到了最终的结果。
2024-06-21 11:32:56 145
原创 142.环形链表II
快指针为什么一定会遇到慢指针?快指针相对慢指针每次移动一个节点,所以它两一定会相遇,而不会让快指针直接跳过它,如果快指针每次走三个节点就有可能跳过。快指针一个节点一个节点靠近慢指针,而不会让快指针直接跳过去。如何想到用快慢指针判断是都有环?如果没环,是一条直线,一个快指针,每次走的比较快,满指针在后面走的慢,快慢指针是绝对不可能相遇的,除非这个链表有环,让快指针转圈,慢指针进来这个圈,快慢指针相遇说明链表有环。快指针每次走两个节点,慢指针每次走一个节点。
2024-06-20 21:02:41 190
原创 02.07. 链表相交
通过两个指针 p 和 q 来遍历链表 headA 和 headB。当其中一个指针到达链表末尾时,它会切换到另一个链表的头部继续遍历。这种方法确保两个指针在同样的步数之后要么相遇在交点上,要么同时到达各自链表的末尾(即都为 null)。这种方法的关键在于两个指针在两个链表中都经历相同的步数,所以可以在链表相交时相遇。
2024-06-20 20:17:53 142
原创 19.删除链表的倒数第N个节点
双指针的经典应用,如果要删除倒数第n个节点,让fast移动n步,然后让fast和slow同时移动,直到fast指向链表末尾。删掉slow所指向的节点就可以了。
2024-06-20 19:26:43 160
原创 344.反转字符串
如果这么做题的话,这样大家不会清楚反转字符串的实现原理了。但是也不是说库函数就不能用,是要分场景的。如果在现场面试中,我们什么时候使用库函数,什么时候不要用库函数呢?
2024-06-20 17:38:30 100
原创 KMP算法
前缀表例如:aabaaf前缀表aaaaabaabaaabaa后缀表fafaafbaafabaaf最长相等前后缀a 0aa 1aab 0aaba 1aabaa 2aabaaf 0前缀表010120next prefix都是放的前缀表通常存放前缀表减1。
2024-06-17 09:53:27 199
原创 383.赎金信
在本题的情况下,使用map的空间消耗要比数组大一些的,因为map要维护红黑树或者哈希标,而且还要做哈希函数,是费时的,数据量大的话就能体现出差别。题目只说了小写字母,可以采用空间换取时间的哈希策略,用一个长度范围26的数组来记录magazine里字母出现的次数。
2024-06-15 10:31:45 130
原创 1.两数之和
这个时候我们就要思考我们要查找的是什么,我们要查找一个元素是否出现过,我们要找的是元素是否出现过,那我们就应该把这个元素作为我们的key,这才是map的作用,map在最快的时间内去查找这个key是否在这个map里出现过。那么我们要查找的是这个元素是否出现过,那么这个元素就作为我们的key,那我们还要知道这个元素组对应的下标。因为想要找一个元素,那这个元素是否出现过,同时我们还要知道这个元素在数组里的下标,那这个时候要判断两个元素,一个是数组里面的这个数值,一个是数组里面的下标,那我们应该用什么来存放。
2024-06-13 22:28:02 324 1
原创 349.两个数组的交集
对于 unordered_map,其值类型为 int,默认值为 0。也就是说,当你访问一个在 unordered_map 中不存在的键时,C++ 会将其对应的值初始化为 0。2.unorder_set //去重。
2024-06-13 20:00:06 100
原创 注意力机制及代码详解
之后对平均池化和最大池化的结果,利用共享的全连接层进行处理,我们会对处理后的两个结果进行相加,然后取一个sigmoid,此时我们获得了输入特征层每一个通道的权值(0-1之间)。之后将这两个结果进行一个堆叠,利用一次通道数为1的卷积调整通道数,然后取一个sigmoid,此时我们获得了输入特征层每一个特征点的权值(0-1之间)。CBAM将通道注意力机制和空间注意力机制进行另一个结合,CBMA会对输入进来的特征层分别进行通道注意力机制的处理和空间注意力机制的处理。其重点是获得输入进来的特征层,每一个通道的权值。
2024-03-05 09:52:18 1552
原创 Python基础小结
变量一般用来描述世间万物变化的状态1.变量名具有某种意义2.由数字/字母/下划线组成,且不能由数字开头(也不能由下划线开头)3.不能由Python关键字NameOfNick(推荐)
2023-11-06 11:25:56 68
原创 map容器
/查找key是否存在,若存在,返回该键的元素的迭代器;//删除区间[beg,end)的所有元素,返回下一个元素的迭代器。//删除pos迭代器所指的元素,返回下一个元素的迭代器。pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)//在容器中插入元素。map容器默认排序规则为按照key值从小到大排序,掌握如何改变排序规则。erase(key);//删除容器中值为key的元素。//统计key的元素个数。
2023-06-05 09:34:22 78
原创 set容器
/删除区间(beg,end)的所有元素,返回下一个元素的迭代器。//查找key是否存在,返回该键的元素的迭代器,若不存在,返回set.end();erase(pos);//删除pos迭代器所指的元素,返回下一个元素的迭代器。//删除容器中值为elem的元素。//在容器中插入元素。//统计key的元素个数。//返回容器中元素的数目。//判断容器是否为空。//交换两个集合容器。//set存放自定义数据类型指定排序规则。set容器不允许容器中有重复的元素。//set存放内置数据类型。
2023-06-03 10:54:33 68
原创 list容器
list 功能:将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表你优点:可以对任意位置进行快速插入或者删除元素缺点:容器遍历速度没有数组快占用空间比数组大list lst;//构造函数将(beg,end)区间中的元素拷贝给本身。
2023-06-02 15:40:02 66
原创 queue容器-常用接口
/queue采用模板类实现,queue对象的默认构造形式。push(elem);//从对头移除第一个元素。//判断堆栈是否为空。back(): //返回最后一个元素。功能描述:栈容器常用的对外接口。
2023-05-15 09:50:43 56
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人