链接: https://oj.leetcode.com/problems/reorder-list/
空间复杂度为O(n),时间复杂度为 O(n)的代码:
/**
* 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)
{
vector<ListNode *> list;
ListNode *tem=head;
if(head==NULL)
return;
while(tem)
{
list.push_back(tem);
tem=tem->next;
}
int i=0,j=list.size()-1;
while(i+1<j)
{
ListNode *s1=list[i];
ListNode *s2=list[j];
s2->next=(s1)->next;
(s1)->next=s2;
i++;
j--;
}
list[j]->next=NULL;
}
};