![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
代码随想录算法训练营
文章平均质量分 83
5 mins
这个作者很懒,什么都没留下…
展开
-
【代码随想录算法训练营】【C语言版】第十天| 栈与队列的理论基础、232.用栈实现队列、225. 用队列实现栈、20. 有效的括号、1047. 删除字符串中的所有相邻重复项
/出队列pop就是把最早的拿出(取首元素peek同理),即如果输出栈为空(即输入栈和输出栈都为空),就把输入栈(最早的在最里面)全导入输出栈,再取出来的最外面的就是最早的;从下图中可以看出,栈的内部结构,栈的底层实现可以是vector,deque,list 都是可以的, 主要就是数组和链表的底层实现。//返回队列的首元素peek,即如果输出栈非空,就直接取出最外面的顶部元素,否则取出输入栈的首元素。//用两个队列实现pop就是将队列1中除了首元素的所有元素放入队列2,再从队列2中放回队列1。原创 2024-06-16 20:16:31 · 936 阅读 · 0 评论 -
【代码随想录算法训练营】【C语言版】第九天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串
解决报错2(前后有空格的测试用例的输出结果在最前面有多余空格):应该是字符串翻转前最后面的空格没删掉,所以想到之前设想的思路中遇到空格但后面是字符的情况,字符不可被简单认为是非空格,还应该非字符串终止符。代码随想录算法训练营第八天| 344.反转字符串 、 541. 反转字符串II、 卡码网:54.替换数字 、 151.翻转字符串里的单词 、卡码网:55.右旋转字符串。解决报错1(有空格的测试用例的输出结果都是错的):s[slow]=‘\0’;原创 2024-06-15 16:16:42 · 513 阅读 · 0 评论 -
【代码随想录算法训练营】【C语言版】第八天| 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字
在采用第二种方法定义字符串时,即不限定字符串长度的逐个字母赋值而不是整个字符串赋值,不要忘记加上字符串的结束标志’\0’,因为编译器不会为程序员自动添加’\0’,所以我们并不推荐这种方式来对字符串进行定义,除了加上’\0’之外,另一种方式就是限定字符串长度,限定之后编译器会在末尾加上结束标志’\0’(此处只是指的vs2019编译器,其它编译器笔者并未验证),当然,最推荐的还是程序员手动添加’\0’作为结束标志。在C语言中,字符串的长度是由其内存布局决定的,不是由字符串字面量的定义直接决定的。原创 2024-06-14 19:28:14 · 827 阅读 · 0 评论 -
【代码随想录算法训练营】第七天| 454.四数相加II、383. 赎金信、15. 三数之和、18. 四数之和
C语言uthash介绍。原创 2024-06-13 20:03:01 · 746 阅读 · 0 评论 -
【代码随想录算法训练营】第六天| 哈希表理论基础、242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和
当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。但是哈希法也是牺牲了空间换取了时间,因为我们要使用额外的数组,set或者是map来存放数据,才能实现快速的查找。如果在做面试题目的时候遇到需要判断一个元素是否出现过的场景也应该第一时间想到哈希法!原创 2024-06-12 15:54:01 · 911 阅读 · 2 评论 -
【代码随想录算法训练营】第四天| 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
思路:设置快慢两个指针,fast每次移动两步,slow每次移动一步,最后在环中相遇则证明有环否则无环,2(x+y)=x+y+n(z+y),求x则为x=n(z+y)-y=(n-1)y+nz=(n-1)(y+z)+z,即如果index1指针从相遇节点出发,index2指针从头节点出发,均每次移动一步,最终相遇点会在环形入口节点即距离头节点为x个节点处,此时index1比index2多走((n-1)圈+z-x),即先得到fast和slow相遇点,再得到index1和index2相遇点即可得到环形入口节点x。原创 2024-06-09 16:00:20 · 544 阅读 · 0 评论 -
【代码随想录算法训练营】第三天| 203.移除链表元素、707.设计链表、206.反转链表
NULL也需要判断,否则会漏index为(末尾下标+1)时,cur为末尾元素时的情况(cur!上面这点在AddAtIndex中不需要考虑因为题目要求说如果 index 等于链表的长度(末尾下标+1),那么该节点会被追加到链表的末尾。定义链表构造函数:C++如果没定义直接使用也行因为系统有默认链表构造函数,但无法在初始化的时候赋值而需要初始化后附值。种类:单链表,双链表(有前节点也有后节点,即可向前查询也可向后查询),循环链表。1.该题默认obj指的是虚拟头节点,但index为0时指的是非虚拟头节点。原创 2024-06-08 10:40:14 · 437 阅读 · 0 评论 -
【代码随想录算法训练营】第二天| 977.有序数组的平方、209.长度最小的子数组、59.螺旋矩阵II
型,所以要强制类型转换成int,在前面加上(int%20*),才能给整型赋值,后面(sizeof(int)*2)的意思是分配两个int大小的空间。思路:找每个数组元素大于等于target的子数组最小长度,找到就和已储存的最小长度进行比较和更新,并继续找下个元素满足条件的子数组最小长度。a[i]数组中存放的则是数组第i行数组元素的地址,长度为二维数组的列数j。既找到了每个数组元素起始的满足条件的子数组最小长度,又找到了其中最小的值作为原数组中满足条件的子数组最小长度。原创 2024-06-07 00:06:37 · 1224 阅读 · 0 评论 -
【代码随想录算法训练营】第一天| 704. 二分查找、27. 移除元素
1定义target在[left, right]区间,初始化right=数组长度-1,while (left <= right) 要使用 <=,if (nums[middle] > target) right 要赋值为 middle - 1。2定义target在[left, right)区间,初始化right=数组长度,while (left < right) 要使用 <,if (nums[middle] > target) right 要赋值为 middle。例如:a=++i相当于i=i+1;原创 2024-06-05 23:46:11 · 541 阅读 · 0 评论