![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
链表
链表相关算法题
CervoLu
这个作者很懒,什么都没留下…
展开
-
24. 两两交换链表中的节点
【代码】24. 两两交换链表中的节点。原创 2023-07-11 02:30:25 · 58 阅读 · 0 评论 -
19移除链表的倒数第N个结点
这题可以用快慢指针的方法,快指针到终点时,慢指针应该在删除结点的前一个结点,为了防止删除头节点,应该在头节点前面新建一个before结点,返回的时候也应返回before->next,这题题解里还用了二次遍历、用栈来解决两种方法,当然还是快慢指针是最好的。#include<iostream>#include<vector>#include<algorithm>using namespace std;struct ListNode { int val;原创 2021-11-29 21:38:41 · 139 阅读 · 0 评论 -
83删除排序链表中的重复元素
没看清题目,题目的链表是升序的,所以重复元素都是连续出现的,不应该用这个set的,直接判断自身和下一个就好了。#include<iostream>#include<unordered_set>using namespace std;struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), n原创 2021-11-21 13:52:57 · 40 阅读 · 0 评论 -
206反转列表
递归和迭代两种方法,我觉得就链表而言迭代更有训练价值#include<iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x原创 2021-11-20 19:57:09 · 295 阅读 · 0 评论 -
203移除链表元素
要么递归要么迭代,但是题解的递归感觉永远写的很简单#include<iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x)原创 2021-11-20 19:29:19 · 36 阅读 · 0 评论 -
21合并两个有序链表
我写的复杂了,主要原因是没有意识到一个问题,就是链表的链接只需要接一个就行了,而不需要一个节点一个节点的去接。题解有两种方法,迭代和递归#include<iostream>using namespace std;struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {}原创 2021-11-20 15:11:10 · 718 阅读 · 0 评论 -
141环形链表
我用的是一个常见的方法,就是用一个集合记录节点是否已经被记录过。题解用了一个龟兔赛跑方法,又见Floyd判圈算法,就是如果起点在前面的快指针如果追上了慢指针,说明有环。#include<iostream>#include<unordered_set>using namespace std;struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {}原创 2021-11-20 13:25:22 · 161 阅读 · 0 评论 -
2两数相加
2两数相加#include<iostream>using namespace std;struct ListNode { int val; ListNode* next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode* next) : val(x), next(next) {}};原创 2021-10-11 09:28:15 · 63 阅读 · 0 评论