/**
* Definition for singly-linked list.
* 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) {}
* };
*/
class Solution {
public:
void reorderList(ListNode* head) {
if(!head || !head->next) return ;
int len = 0;
ListNode* newHead = new ListNode();
ListNode *p = head, *q, *t;
for( ; p; p = p->next) len++;
p = head;
for(int cnt = 0; p->next; cnt++) {
if(cnt < (len-1)/2) p = p->next;
else {
q = p->next;
p->next = q->next;
q->next = newHead->next;
newHead->next = q;
}
}
for(p = head, q = newHead->next; q; ) {
t = p->next;
p->next = q;
q = q->next;
p->next->next = t;
p = t;
}
}
};
【leetcode 链表】143. Reorder List C++
最新推荐文章于 2022-01-07 18:55:41 发布
关键词由CSDN通过智能技术生成