![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
力扣刷题
Wangtffn
这个作者很懒,什么都没留下…
展开
-
151 反转字符串中的单词
(写给未来遗忘的自己)原创 2024-07-24 00:20:00 · 331 阅读 · 0 评论 -
202.快乐树
一个整数对10取余就得到最后一位数,然后整数对10取商就剔除最后一位,倒数第二位成为最后一位,一直循环,直到取商为0;利用 unordered_set的哈希数表。查找的速度为log(n)。,永远求解不到解,所以只要不进入死循环就让他一直求解下去。1. 思考如何会出现,如何永远不出现?3. 怎么可以做到求解位数的平方呢?2. 怎么快速查是否相等的和存在?位置上的数平方后的和,如果。的情况,那么就意味着陷入了。(写给未来遗忘的自己)原创 2024-07-15 23:13:07 · 115 阅读 · 0 评论 -
15 三数之和
当出现一组合适的三元数后,第一个数目前还是保持不变的(-2),如果第二个和第三个数出现连续一样的数,那么加进去就是一样的三元数。(1,3,5)(1,4,6)虽然下标不一样,但是出来的三元数一样,所以需要去掉。:如果和上一个数一样,那么后面的两个数只要和上一次一样就可以,就会出现三个数重复。(0,3,4)(1,3,4)就会出现下标一样的数组。由于我们上面说的是排好序的,所以只要挨着的不一样,之后一定不一样。这个和四数之和等于零的区别在于,同一个数组里面,三个数的下标要求完全不一样。(写给未来遗忘的自己)原创 2024-07-18 00:08:24 · 156 阅读 · 0 评论 -
454.四数相加Ⅱ
因为我们的需求是找到有多少组,而不是找到有没有。所以我们需要一个记录和,一个记录出现的次数,采用std::undered_map。利用key记录和的情况,利用value 记录出现的次数。考虑两两数组相加(O(n^2)),然后查找是否有相反数(查找考虑哈希数表,O(1))。哈希选择(std::undered_set std::undered_map)?找到的是四个数的和为0,暴力求解就是四个for循环。(数据太多可能超时)(写给未来遗忘的自己)原创 2024-07-16 22:55:30 · 100 阅读 · 0 评论 -
242.有效的字母异位数
2.字符a到z是对应的ASCII的26个连续的数值,所以将每一个数值减去第一个 ‘a’ 的ASCII得到的就是从0-25的连续数字。知识点:1.字符串本质是字符数组,所以可以使用处理数组的方式获取到string类型里面的每一个字母。3.相同字母出现的次数是否相同,就是看最后数组每一个位置是否都是0。(写给未来的遗忘的自己)原创 2024-07-13 21:34:01 · 176 阅读 · 0 评论 -
18.四数之和
(采用 long long )(三数之和的时候没考虑,这个是测试案例暴了之后才改的。注意:这个题目的思路和三数之和的思路一样,就是多加一层的for循环。(写给未来遗忘的自己)原创 2024-07-19 21:43:05 · 177 阅读 · 0 评论 -
344.反转字符串&&541.反转字符串Ⅱ
循环条件就是first_ptrlast_ptr的时候跳出循环.整体简单,就是利用双指针,一个从前往后,一个从后往前,将当前两个下标对应的数据直接交换(利用。方法一:自己写内部实现。(写给未来遗忘的自己)方法二:(调用C++的。反转函数reverse。原创 2024-07-19 23:39:17 · 112 阅读 · 0 评论 -
349.两个数组的交集
而且它的查找、插入和删除操作在平均情况下的时间复杂度接近于O(1)。但在最坏的情况下,时间复杂度可能退化为O(n)。提供了对数时间复杂度的插入、删除和查找操作,即O(log n)。,插入、删除和查找操作的时间复杂度同样是O(log n)。方法1:暴力求解(复杂度为O(n^2))是一个存储唯一元素的关联容器,它基于。1.哈希数表的一种形式 (set)(写给未来遗忘的自己)中插入多个相同的值。2.for循环的遍历。原创 2024-07-14 00:30:15 · 272 阅读 · 0 评论 -
1.两数之和
(写给未来遗忘的自己)1.暴力破解法直接两个for循环,直接加2.利用std::undered_map来计算使用同样的map类型的哈希数表,map的三种具体实现写在文末。思路:1.我直到结果target,那我在遍历到的值知道,相当于查找一个差值是否存在,当用到查找的时候就考虑哈希数表(数组,set,map) std::undered_map 的查找和删除复杂度O(1)。2.将遍历过的值作为key,下标作为值存储。当前值和遍历过存储的值中寻找是否有满足的。原创 2024-07-16 00:25:19 · 491 阅读 · 0 评论 -
383.赎金信
2.遍历ransomNote中的字符在哈希数表中查找,如果找不到,或者value小于1,说明同一字符出现的次数不够,如果可以找到就减小一次value的值,直到遍历结束。1.将magazine的字符存储作为一个键存储在std::unordered_map的哈希数表中,value中记录出现的次数。是一个哈希映射(hash map),它可以快速地通过键来查找和修改值。2.std::unordered_map 的键和值的创建。这道题题目思路简单,重点是它对于字符串的一个遍历。为键的条目,并将该条目的值增加 1。原创 2024-07-16 23:46:23 · 147 阅读 · 0 评论 -
459 重复的子字符串
1.如果可以一个字符串重复构成,那么这个字符串的个数(i)肯定可以被总数(n)整除。所以选择可以整除的数,作为轮回,将后面的所有数前i个比对重复。3.判断fast_ptr是否自然结束,自然结束就是找到了,否则就没找到。2.如果不一样就跳出当前循环,如果一样就一直循环到数组结束,(写给未来遗忘的自己)原创 2024-07-25 22:29:34 · 157 阅读 · 0 评论 -
面试题02.07链表相交
注意的点: 相交的是链表,所以是对应的地址一样而不是里面的数据一样。lissnode *aa_head定义的就是指针类型的,所以相等的时候就是指针相等。返回链表就是把整体返回了。(写给未来遗忘的自己)原创 2024-07-10 00:13:45 · 166 阅读 · 0 评论 -
977.有序数组的平方
利用了vector的自带的排序方法。1.前后两个数中一个是最大的,从两侧往中间走。直到左侧点超过右侧点停止。将每次取到的值放在新的数组的最后。2.新的数组可以初始化一个内存,这样不用动态处理内存,更节省资源。组成的新数组,要求也按。原创 2024-07-05 00:41:40 · 154 阅读 · 0 评论 -
209 长度最小的子数组
记录一个开始指针,一个结尾指针。结尾指针开始运行,直到满足结果target;就记录一下子数组的个数,如果比最小子数组个数小就更新,否则最小子数组不变。然后将第一个指针对应的从子数组剔除,然后移动第一个指针到下一个位置。注意:需要的是连续的最小子数组。第一次下手直接从大到小排序了,糊涂糊涂糊涂!连续数组用滑动窗口(双指针的一部分)如果不存在符合条件的子数组,返回。找出该数组中满足其总和大于等于。个正整数的数组和一个正整数。(写给未来遗忘的自己)原创 2024-07-05 01:50:56 · 134 阅读 · 0 评论 -
707 设计链表
整个方法就是一个单链表的方法,建立一个虚的头链表用于操作更加方便,在构造函数里面。利用一个size进行计数的操作。注意:上面的所以汉字标注都是自己第一次写完的bug的地方。主要的问题在于空指针的处理(考虑为空的现象怎么处理)(写给未来遗忘的自己)原创 2024-07-08 01:27:08 · 186 阅读 · 0 评论 -
203.移除链表元素
4.第一次提交错误的原因是 else里面的内容写在了外面 导致如果连续两个需要移除就报错,所以注意细节,细节决定成败!2. C++中的链表删除元素后断开next的链接就是完成了,但是需要进行delete删除操作,避免内存的泄露。3. next指向的是listNode类型的数据,也就是整个下一个链表的地址。内部包含一个构造函数来初始化一个。(写给未来遗忘的自己)原创 2024-07-07 21:03:06 · 179 阅读 · 0 评论 -
206 反转链表
注意:将当前头节点作为每一次反转后的头节点,下一个节点就当作探索的一个点,那么探索的这个点当为空的时候就是结束的时候,返回的就是每一次记忆的头节点。第一次做的错误点:(循环结束的条件和返回的头节点是那个)(写给未来遗忘的自己)原创 2024-07-08 23:16:08 · 213 阅读 · 0 评论 -
24.两两交换链表中的节点
1.由于链表是一条绳,所以处理两个数据就需要更新前后的两个连接点,就是四个数据的更新(特殊点对于头节点时候只需要更新后面的就可以,头上再没有)3.需要注意的是,交换至少需要两个,所以小于两个的直接返回自己就可以了。2.结束循环的条件为后面两个节点为空,(写给未来遗忘的自己)原创 2024-07-09 00:27:04 · 201 阅读 · 0 评论 -
19.删除链表的倒数第N个节点
删除倒数第n个,就是让一个快速节点和慢节点相距n,那么慢节点的下一个就是需要删除的节点。使用虚拟的头节点,如果头节点需要删除,那就和删除后面的没有区别。注意:(对于链表的处理要学会使用虚拟头,对于好多题都是简单的)(写给未来遗忘的自己)原创 2024-07-09 00:57:56 · 116 阅读 · 0 评论 -
59.螺旋矩阵Ⅱ
2.对于循环封闭的,保证四条线闭合的左右一直相同。一直保持左闭右开的情况,这样每一行的数据就是n-1个。循环一次开始和结束向内走1,开始由x,y控制开端,结束端由circulation控制。思路:1.对于偶数正好可以走完,但是对于奇数会出现中间的一个方框(n^2)没有值的情况,需要单独处理.所有元素,且元素按顺时针顺序螺旋排列的。(写给未来遗忘的自己)原创 2024-07-06 18:44:59 · 213 阅读 · 0 评论 -
27. 移除元素
1.在前后的数组交换的过程中,可能前后都是与val 相同的值,所以只要发生交换就不++ ,对交换过的数值再检查一次。2.可以计数交换的次数,作为循环条件的一部分,到了交换过的数据就停止。元素的顺序可能发生改变。(写给未来遗忘的自己)原创 2024-07-03 22:08:52 · 145 阅读 · 0 评论 -
704 二分查找
的时候取不到上界就会跳出循环,所以需要特殊处理。同理在数组小于等于2个的时候同样不会进入循环,所以需要处理。1.跳出循环的方式采用的 stare==half_size 所以当stare与end相距仅有1。2. 这道题自己的重点在于边界的处理。,如果目标值存在返回下标,否则返回。个元素有序的(升序)整型数组。(写给未来忘记的自己)(刚开始方法比较笨)原创 2024-07-03 21:37:23 · 124 阅读 · 0 评论