- 博客(14)
- 收藏
- 关注
原创 6.5+6.6——day14+day15——计科大一0基础面向工作式学习
例如 字符串 "a5b" 的长度为3,那么 将 数字字符变成字符串 "number" 之后的字符串为 "anumberb" 长度为 8。字符串是若干字符组成的有限序列,也可以理解为是一个字符数组,但是很多语言对字符串做了特殊的规定,接下来我来说一说C/C++中的字符串。其实在基本操作上没有区别,但是 string提供更多的字符串处理的相关接口,例如string 重载了+,而vector却没有。ps:但是我的双指针是自己写的,代码随想录上的两个双指针的实现方法我懒得看,有点难看,复习的时候可以将其理解。
2025-06-06 21:43:18
1718
原创 6.4——day13——计科大一0基础面向工作式学习
目的数字是target不是0,这一步很关键,因为可能会是负数,影响前面的剪纸操作。代码随想录官网网站,代码随想录网站,代码随想录官网,代码随想录百度网盘,代码随想录知识星球,代码随想录八股文PDF,代码随想录刷题路线,代码随想录知识星球八股文。a.要注意的是每一个循环都需要剪纸,并且具体情况具体分析,每一步剪纸操作不一样。b.第二个循环的剪纸操作和第一个循环不一样,只能break,不能return;至此,哈希表章节也算是结束啦——恭喜恭喜——进入下一章节。c.使用while()剪纸也是可以的!
2025-06-05 01:27:15
89
原创 6.1+6.2——day11+day12——计科大一0基础面向工作式学习
学习概要:代码随想录:哈希表6.四数相加Ⅱ:leetcode454方法一:这是我自己想的使用两个unordered_map来解决问题,但是呢逐个访问unordered_map的语法我不会,是网上查的时间复杂度o(n*n)方法二:优化了空间复杂度的常数因子,并且避开了迭代器逐个访问unordered_map里面所有键值对的步骤7.赎金信leetcode383。
2025-06-03 00:55:27
1426
原创 5.30——day10——计科大一0基础面向工作式学习
在遍历数组的时候,只需要向map去查询是否有和目前遍历元素匹配的数值,如果有,就找到的匹配对,如果没有,就把目前遍历的元素放进map中,因为map存放的就是我们访问过的元素。map目的用来存放我们访问过的元素,因为遍历数组的时候,需要记录我们之前遍历过哪些元素和对应的下标,这样才能找到与当前元素相匹配的(也就是相加等于target)本题呢,我就需要一个集合来存放我们遍历过的元素,然后在遍历数组的时候去询问这个集合,某元素是否遍历过,也就是 是否出现在这个集合。
2025-05-31 00:08:46
840
原创 5.29——day9——计科大一0基础面向工作式学习
方法一:暴力两层for循环:对第一个字符逐个扫描,每一次再对第二个扫描,匹配上了就做个标记,然后退出第二层循环,如果没有全都没匹配到返回false,有匹配到就继续扫描,没有从循环中return false的话那么就可以return true;由于a-z的ASCII码是连续的,所以可以将他们做一个映射,映射到数组hash【26】,然后统计每一个字母出现的个数。时间复杂度为O(n),空间上因为定义是的一个常量大小的辅助数组,所以空间复杂度为O(1)空间复杂度:O(logn)。注意一下这个自带的排序函数!
2025-05-29 16:44:14
193
原创 5.19——day8——计科大一0基础面向工作式学习
本文主要介绍了链表相关的算法问题及其解决方法。首先,讲解了如何删除链表的倒数第N个节点,提供了暴力解法和双指针解法,后者通过快慢指针的巧妙运用,提升了效率。接着,讨论了链表相交问题,通过计算链表长度并移动指针找到相交节点。最后,详细分析了环形链表问题,使用快慢指针判断链表是否有环,并通过数学推导找到环的入口。文章还总结了链表的基础知识、重要题目和常用技巧,如虚拟头节点的使用、链表的增删改查操作等。这些内容为理解和掌握链表相关的算法提供了清晰的思路和实用的方法。
2025-05-19 00:53:47
138
原创 5.18——day7——计科大一0基础面向工作式学习
《代码随想录》中的链表部分主要讲解了翻转链表和两两交换链表节点的经典问题。对于翻转链表(LeetCode 206),提供了双指针和递归两种解法。双指针法通过遍历链表,逐个翻转节点指向,最终返回新链表的头节点。递归法则通过递归调用逐步翻转链表,理解起来较为复杂,但代码简洁。对于两两交换链表节点(LeetCode 24),建议使用虚拟头节点简化操作,避免单独处理头节点,并通过画图帮助理解交换过程。代码中需注意返回的是虚拟头节点的下一个节点,而非原头节点。两种问题的解法都强调了模拟和细节处理的重要性。
2025-05-18 01:14:38
155
原创 5.17——day6——计科大一0基础面向工作式学习
文章主要总结了数组和链表的学习要点。在数组部分,重点介绍了二分法、双指针法、滑动窗口、前缀和和模拟法等主要方法,并强调了复习的重要性。在链表部分,详细讲解了链表的定义、节点初始化、添加和删除节点的操作,以及链表的性能分析。此外,文章还通过LeetCode题目203和707的解析,展示了如何移除链表元素和设计链表,强调了虚拟头节点的使用和递归调用的掌握。最后,文章提醒读者要注意编译错误的提示,并养成手动清理内存的习惯。
2025-05-17 18:00:39
1630
原创 5.16——day5——计科大一0基础面向工作式学习
在用列划分的时候,将每一列的和组成一个新的一维数组。在用行划分的时候,将每一行的和组成一个新的以为数组。这样分别求差距最小。如果,我们想统计,在vec数组上 下标 2 到下标 5 之间的累加和,那是不是就用 p[5] - p[1] 就可以了。要点:前缀和,暴力解法时间复杂度高,有冗余运算.所以采用前缀和的思想来解决区间计算问题。我们先做累加,即 p[i] 表示 下标 0 到 i 的 vec[i] 累加 之和。前缀和的思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。
2025-05-16 23:41:37
358
原创 5.15——day4——计科大一0基础面向工作式学习
要点:双指针,因为为有序数组,所以平方项最大一定出现在头尾,通过指针访问比较头尾的平方项,将大的填入新建数组,并且移动此指针,当完成nums.size()次循环就完成啦。以及为什么这个要用b【startx】【j】,因为上一次循环结束后,ij回到起始点(假设上一次为第一次),即(0,0),此时要重新从start下,starty开始,而不是i,j。以下是第一次用c语言手搓出来的,找了好久规律,应该花了好多小时,蛮有意思的哈哈,现在可能也不咋看得懂了。以及b【i】【j】,i代表x方向的变化,j代表y方向的变化。
2025-05-16 01:23:07
245
1
原创 5.13——day2+5.14——day3——计科大一0基础面向工作式学习
加上区间左闭右开,在进行left,right,middle之间的赋值的时候也要保持左闭右开,while里面也要保持左闭右开,这样保证了代码的一致性,不会发生死循环。本题中可以采用指针也可以采用数组的下标,就是一个快指针一个慢指针,快指针用来获取所需要新数组的元素来赋值给慢指针,使得慢指针覆盖旧数组。要点:这个eraser函数的时间复杂度是O(n),因为要将所删除的元素后面的元素整体往前移(ersaer函数的内部就是采用双指针来实现的)5.13今天学习状态不是很好,老想着玩手机,感觉没有那么的有干劲。
2025-05-15 01:36:49
327
原创 5.12——day1——计科大一0基础面向工作式学习
4.初步学习了哈希表的部分知识,但是感觉逻辑上还不是很转得过来,还是有点乱乱的。而且哈希表的相关函数也不太会。(有用到:hash_map.find(),hash_map.end())3.学习的vector<>数组的部分用法和几个基本函数(eg:数组名.size())2.leetcode上做了一题hot'100‘easy。1.哔哩哔哩上找到一个教程,登上了github。
2025-05-13 00:36:15
153
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人