链表
巴巴多斯小魔
这个作者很懒,什么都没留下…
展开
-
leetcode 160. 相交链表 唔~
题目class Solution {public: ListNode *getIntersectionNode(ListNode *x, ListNode *y) { if(!x||!y) return NULL; ListNode *xx=x,*yy=y; while(xx!=yy){ xx=(xx?xx->next:y); yy=(yy?yy->next:x); }原创 2021-04-03 01:40:07 · 75 阅读 · 0 评论 -
leetcode 143. 重排链表 123456变成162534
快慢指针找到中间节点后,后一半反转 然后交叉合并。。class Solution {public: ListNode* getmid(ListNode *head){ ListNode *slow,*fast; slow=fast=head; while(fast&&fast->next) fast=fast->next->next,slow=slow->next; return slow;.原创 2021-04-03 00:40:05 · 381 阅读 · 0 评论 -
leetcode 460. LFU 缓存
题目class LFUCache {public: struct Node{ int key,val,t; Node(int _key,int _val,int _t):key(_key),val(_val),t(_t){} }; typedef list<Node>::iterator It; int mint,capacity,sz; map<int,list<Node>>mp; m原创 2021-03-02 16:35:47 · 63 阅读 · 0 评论 -
leetcode 25. K 个一组翻转链表
题目class Solution {public: ListNode* cal(ListNode* head,int K){ ListNode *now=head->next,*nex=now->next,*nexnex;int cnt=0,flag=0; while(nex&&++cnt<K) nexnex=nex->next,nex->next=now,now=nex,nex=nexnex,flag|=(cnt=原创 2021-02-12 13:09:20 · 72 阅读 · 0 评论 -
leetcode 146. LRU 缓存机制
题目Node要存储key,因为要删除tail时,也需要从map里面删除,然后删除的时候需要ket,所以tail节点里面要含有tail对应的key。别忘了 remove(now)时更新相应的head,tail。class LRUCache {public: class Node{ public: Node(int key,int val){this->key=key,this->val=val,this->pre=NULL,this->nex=原创 2021-02-12 01:19:36 · 58 阅读 · 0 评论 -
链表一些基本操作
leetcode 206. 反转链表题目class Solution {public: ListNode* reverseList(ListNode* head) { if(!head) return head; ListNode *now=head,*nex=head->next,*nexnex; while(nex) nexnex=nex->next,nex->next=now,now=nex,nex=nexnex;原创 2021-02-02 12:34:19 · 104 阅读 · 0 评论 -
leetcode 148. 排序链表(非递归归并排序/以及不需要快慢指针的归并)
class Solution {public: int getlen(ListNode *head){ int cnt=0; while(head) ++cnt,head=head->next; return cnt; } ListNode* mov(ListNode*& x,int len,int flag){//x有可能为NULL //if(!x) return NULL; Lis.原创 2020-11-23 15:49:12 · 138 阅读 · 0 评论