摘要: 思路一:哈希 借助哈希保存节点信息。 代码 时间复杂度:O(n)空间复杂度:O(n) class Solution{ public: Node* copyRandomList(Node* head) { if(!head) return NULL; map<Node*,Node*>Map; //遍历 阅读全文
posted @ 2019-11-18 21:08 任仁人 阅读(129) 评论(0) 推荐(0)
摘要: 链表中的点已经相连,一次旋转操作意味着: 先将链表闭合成环 找到相应的位置断开这个环,确定新的链表头和链表尾 class Solution{ public: ListNode* rotateRight(ListNode* head,int k) { //判断是否为空或者是不是只有一个结点 if(he 阅读全文
posted @ 2019-11-18 19:35 任仁人 阅读(130) 评论(0) 推荐(0)
摘要: 1。利用了栈stack后进先出的性质,存储带 孩子结点 的 结点 的下一个结点.class Solution{ public: Node* flatten(Node* head) { if(!head) return NULL; Node* p=new Node(); p=head; Node* p 阅读全文
posted @ 2019-11-18 18:22 任仁人 阅读(186) 评论(0) 推荐(0)
摘要: 使用迭代的方式 class Solution{ public: ListNode *addTwoNumbers(ListNode* l1,ListNode *l2) { ListNode *res=new ListNode(-1); ListNode *p=res; int temp=0,incre 阅读全文
posted @ 2019-11-18 15:03 任仁人 阅读(132) 评论(0) 推荐(0)
摘要: 1.使用multimap对键从大到小排列的性质 class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { multimap<int,ListNode*>Map; ListNode *res,*head 阅读全文
posted @ 2019-11-18 13:38 任仁人 阅读(154) 评论(0) 推荐(0)
摘要: 小结 - 链表 复习 让我们简要回顾一下单链表和双链表的表现。 它们在许多操作中是相似的。 它们都无法在常量时间内随机访问数据。 它们都能够在 O(1) 时间内在给定结点之后或列表开头添加一个新结点。 它们都能够在 O(1) 时间内删除第一个结点。 但是删除给定结点(包括最后一个结点)时略有不同。 阅读全文
posted @ 2019-11-18 12:37 任仁人 阅读(19) 评论(0) 推荐(0)
摘要: 简介 - 双链表 我们在前面的章节中介绍了单链表。 单链接列表中的结点具有 Value 字段,以及用于顺序链接结点的“Next”引用字段。 在本文中,我们将介绍另一种类型的链表:双链表。 定义 双链表以类似的方式工作,但还有一个引用字段,称为“prev”字段。有了这个额外的字段,您就能够知道当前结点 阅读全文
posted @ 2019-11-18 09:58 任仁人 阅读(51) 评论(0) 推荐(0)