
链表
链表
yc_cy1999
一只喜欢cc和想去南大的小羊
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
链表数据结构模板
通常在算法题中,使用结构体来描述一个链表: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) {}};或者是下面这种写起来比较复杂的形式:struct ListNode{ int val;原创 2022-01-05 09:39:13 · 414 阅读 · 0 评论 -
LeetCode 25. Reverse Nodes in k-Group【经典面试题+k个一组反转链表】⭐⭐⭐⭐⭐
文章目录题目描述知识点我的实现码前思考代码实现码后反思题目描述知识点链表题我的实现码前思考使用的递归的思想,里面有分治的概念。每次反转一组,接下来的其他组就交给递归函数了。代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };.原创 2020-09-09 17:09:56 · 228 阅读 · 0 评论 -
LeetCode 2. Add Two Numbers
文章目录题目描述知识点我的实现码前思考代码实现码后反思二刷代码题目描述知识点链表、数学我的实现码前思考大整数加法的模拟题代码实现//类似于大整数加法,只不过将数组变成了单链表//注意特判一些特殊情况/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL.原创 2020-09-01 15:32:30 · 114 阅读 · 0 评论 -
⭐⭐⭐【链表+双指针】LeetCode 234. Palindrome Linked List
文章目录题目描述知识点结果实现码前思考代码实现先找中点,再翻转边找中点边翻转码后反思题目描述知识点链表、双指针结果实现码前思考题目有一个要求——Could you do it in O(n) time and O(1) space?。所以不能使用暴力地存储值到数组来解答;看了官方的思路,发现可以使用翻转一半的链表来实现。关于翻转一半的链表,需要先找到中点。可以边找中点边翻转,也可以先找中点,再翻转。代码实现先找中点,再翻转/** * Definition for si.原创 2020-07-26 17:25:51 · 113 阅读 · 0 评论 -
LeetCode 206. Reverse Linked List⭐⭐⭐⭐⭐【反转链表模板题+迭代+递归】
文章目录题目描述知识点结果实现码前思考代码实现迭代递归码后反思题目描述知识点反转链表结果见代码实现实现码前思考使用两种解法:递归 / 迭代 来解题。这两种方法都要掌握,虽然可能迭代更直接,但是很多难题里面用递归用得比较多!代码实现迭代/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int .原创 2020-07-25 23:21:07 · 286 阅读 · 0 评论 -
⭐【链表拼接】160. Intersection of Two Linked Lists
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点链表拼接结果实现码前思考看题目没看懂,以为是值相同就算相交,结果要求是共享同一条链才算相交!!!解法:先得到两条链的长度;先移动长链的指针,直到两条链表剩余长度相等;再同时移动短链和长链指针,并且比较两个指针是否相同。代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * L.原创 2020-07-25 21:56:21 · 121 阅读 · 0 评论 -
LeetCode 148. Sort List【链表+归并排序】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点链表、归并排序结果实现码前思考由于题目要求空间复杂度是 O(1)O(1)O(1),因此不能使用递归。因此这里使用 bottom-to-up(自底向上) 的算法来解决。bottom-to-up 的归并思路是这样的:先两个两个的 merge,完成一趟后,再 4 个4个的 merge,直到结束。举个简单的例子:[4,3,1,7,8,9,2,11,5,6]。step=1: (3->4)->(1->7)-&.原创 2020-07-25 18:10:47 · 171 阅读 · 0 评论 -
LeetCode 146. LRU Cache【哈希+队列/哈希+双向链表】⭐⭐⭐⭐⭐
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点设计题(就是模拟题啦)结果实现码前思考这里我使用的是一个队列q来记录操作(即push和get)过的key,然后使用一个map存储key-value对,一个map存储在队列q中的存在某个key的次数,即key-count对;接下来的操作就很简单了,如果加入新元素,就从队列队头取count为0的那个key换出。代码实现class LRUCache {public: queue<int> q;.原创 2020-07-24 19:38:24 · 348 阅读 · 0 评论 -
【区间反转链表】LeetCode 92. 反转链表 II
文章目录题目描述知识点结果实现码前思考代码实现码后反思题目描述知识点链表结果实现码前思考就是把完全反转链表改成了区间反转链表代码实现//反转链表有模板的/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class.原创 2020-07-05 11:33:41 · 331 阅读 · 0 评论 -
⭐⭐⭐PAT A1074 Reversing Linked List
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述按照要求反转链表,这道题目与leetcode上的一道题目非常类似,也是反转链表,不过这里给的是静态链表知识点链表操作实现码前思考为每个结点定义一个优先级,先按顺序排序,然后分段按照优先级逆序排序,输出即可!代码实现//为每一个结点定义一个优先级,然后排序#include <cstdio>#include <algorithm>using namespace std;const int max.原创 2020-05-30 19:52:36 · 157 阅读 · 0 评论 -
PAT A1093 Count PAT & A1097 Deduplication on a Linked List
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点实现码前思考代码实现码后反思题目描述知识点思维实现码前思考看到数据集的大小是10510^5105,那么基本可以确认,不能使用O(N2)O(N^2)O(N2)的算法,那么又要遍历每一个字母,所以必然是大于等于O(N)O(N)O(N)的算法;如果采用O(N)O(N)O(N)的算法,意味着不能在i时,查看0...i-1的每个数,那么就要使用空间换时间的思想;根据题目的含义,动手模拟一下,就知道可以使用 计数 的思想实现;代.原创 2020-05-18 23:35:05 · 213 阅读 · 0 评论 -
PAT A1133 Splitting A Linked List
文章目录题目描述知识点实现码前思考代码实现码后反思题目描述知识点链表实现码前思考多次遍历即可代码实现//采用双数组的方式进行存储#include "bits/stdc++.h"using namespace std;const int maxn = 1e5+10;int n;int first;int k;vector<int> c1;...原创 2020-05-04 19:10:20 · 95 阅读 · 0 评论 -
LeetCode 21. Merge Two Sorted Lists【合并有序链表】
文章目录题目描述知识点结果实现码前思考代码实现码后反思参考文档题目描述知识点链表结果实现码前思考就是很传统的链表操作代码实现//类似于归并排序的思想/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ...原创 2020-04-24 15:10:25 · 238 阅读 · 0 评论