摘要: 找到中间结点,将后半部分反转接入即可。 ListNode *reoderList(ListNode* head) { if (head == nullptr || head->next == nullptr)return head; //找到中间结点的方法很巧妙 ListNode *slow = h 阅读全文
posted @ 2016-05-21 16:14 牧马人夏峥 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 两个思路,一是用哈希表记录每个结点是还被访问过;二是定义两个快、慢指针,如果存在环的话,两个指针必定会在某位结点相遇。 bool linkListNode(ListNode *head) { ListNode *fast=head, *slow=head; while (fast && fast-> 阅读全文
posted @ 2016-05-21 16:02 牧马人夏峥 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 深拷贝一个链表,不同的是这个链表有个额外的随机指针。参考:http://blog.csdn.net/ljiabin/article/details/39054999 做法非常的巧妙,分成三步,一是新建结点,并放在旧结点之后;二是修改新结点的random指针;三是将新旧链表断开。 RandomList 阅读全文
posted @ 2016-05-21 15:29 牧马人夏峥 阅读(107) 评论(0) 推荐(0) 编辑