- 博客(11)
- 收藏
- 关注
原创 代码随想录DAY10|栈和队列理论基础 232.用栈实现队列 225. 用队列实现栈 20. 有效的括号 1047. 删除字符串中的所有相邻重复项
写的太冗余,优化一下:遇到左括号,不入栈左括号,而是入栈右括号,这样在出栈匹配的时候就可以用统一的相等语句判断,而不需要一一判断。2.这一块代码不要忘了,获取top元素之后要把队列恢复原状。3.不要写成this->push(result);1.为什么MyQueue()是空的?1. 栈和队列提供.size()方法。
2025-02-15 16:39:30
262
原创 代码随想录Day09|151.翻转字符串里的单词 卡码网:55.右旋转字符串 KMP算法
步骤:(1,2步可互换)1.删除多余空格2.整体翻转字符串3.局部翻转字符串注意点:1.swap可以直接用2.除了首单词,在单词前面加一个空格的写法保留字符串前length个字符为新的字符串4.有=5.不要忘了这个条件。
2025-02-14 21:44:33
319
原创 代码随想录算法训练营第八天| 344.反转字符串,541. 反转字符串II,卡码网:54.替换数字
前后指针。前指针向后遍历,后指针向前遍历,交换这两个数。O(n)O(1)
2024-07-26 20:46:47
353
原创 代码随想录算法训练营第七天| 454.四数相加II, 383. 赎金信,15. 三数之和,18. 四数之和
map做哈希表。四个数组两两组合,合并成两个,其中一个存放在map中,另一个遍历。map中,key存的是元素,value存的是元素出现的次数。O(O(大致思路有点像两数之和。如果是三个数组组合成一个数组,再和剩余的那个数组做遍历查询,时间复杂度和空间复杂度是 O(在C++中,使用std::map时,如果num不存在,map[num]语句会插入一个新的键值对,键为num,值为默认值(通常是 0 或者空)。如果num存在,map[num]语句表示相应的value值。
2024-07-24 19:45:22
355
1
原创 代码随想录算法训练营第六天|哈希表理论基础 ,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和
一般哈希表都是用来快速判断一个元素是否出现集合里。哈希函数:开放定址法、除留余数法、......哈希碰撞的解决:拉链法、线性探测法、......哈希表的实现:数组、set(unordered用的最多,可以无序,不可以重复,底层哈希表。当我们要使用集合来解决哈希问题的时候,优先使用unordered_set,因为它的查询和增删效率是最优的,如果需要集合是有序的,那么就用set,如果要求不仅有序还要有重复数据的话,那么就用multiset。使用原则同上。
2024-07-22 23:08:01
1898
1
原创 代码随想录算法训练营第四天| 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点, 面试题 02.07. 链表相交,142.环形链表II
思路:在不允许更改节点内容的前提下,要交换a和b两个节点,需要current指向a前面的一个节点。时间复杂度:O(n)空间复杂度:O(1)注意:使用虚拟头结点,可以统一操作。
2024-07-21 23:46:07
408
原创 代码随想录算法训练营第三天| 203.移除链表元素,707.设计链表,206.反转链表
链表是一种通过指针串联在一起的线性结构,每一个节点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个节点的指针域指向null(空指针的意思)。单链表、双链表、循环链表链表在内存中不是连续分布的,链表是通过指针域的指针链接在内存中各个节点。不定义构造函数,C++默认生成一个构造函数,但是在初始化的时候就不能直接给变量赋值!
2024-07-19 17:41:49
469
原创 代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵II
1.二分法;2.双指针;3.滑动窗口;4.循环不变量&边界条件。
2024-07-18 17:59:26
324
原创 代码随想录算法训练营第一天|704. 二分查找,27. 移除元素,34. 在排序数组中查找元素的第一个和最后一个位置,35. 搜索插入位置
思路:二分查找的应用,一个二分查找可以找到一个元素的位置,因此要找到。
2024-07-17 17:35:09
545
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人