首页 > 学院 > 开发设计 > 正文

143. Reorder List

2019-11-08 03:20:45
字体:
来源:转载
供稿:网友

好题!!!虽然简单当时还是要想很多东西的! 3步

//Find the middle of the list//Reverse the half after middle 1->2->3->4->5->6 to 1->2->3->6->5->4//Start reorder one by one 1->2->3->6->5->4 to 1->6->2->5->3->4/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: void reorderList(ListNode* head) { if(head == NULL || head -> next == NULL) return ; ListNode* p1 = head; ListNode* p2 = head; while(p2 -> next != NULL && p2 -> next -> next != NULL){ p1 = p1 -> next; p2 = p2 -> next -> next; } ListNode* PReM = p1; ListNode* preC = p1 -> next; while(preC -> next != NULL){ ListNode* current = preC -> next; preC -> next = current -> next; current -> next = preM -> next; preM -> next = current; } p1 = head; p2 = preM -> next; while(p1 != preM){ preM -> next = p2 -> next; p2 -> next = p1 -> next; p1 -> next = p2; p1 = p2 -> next; p2 = preM -> next; } }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表