简单直接的思路 用个vector存起来
/** * 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==nullptr){ return; } auto node=head; vector<ListNode*> f; while(node!=nullptr){ f.push_back(node); node=node->next; } int i=0,j=f.size()-1; while(i<j){ f[i]->next=f[j]; i++; if(i==j){ break; } f[j]->next=f[i]; j--; } f[j]->next=nullptr; } };