一、题目
二、代码
/**
* 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)
{
vector<ListNode*> vec;
ListNode* cur=head;
//将链表填充到vec 容器中
if(cur==nullptr) return;
while(cur!=nullptr)
{
vec.push_back(cur);
// std::cout<<" val "<<cur->val<<std::endl;
cur=cur->next;
}
cur=head;
int i,j;
int count=0;
i=1;
j=vec.size()-1;
while(i<=j)
{
if(count%2==0)
{
cur->next=vec[j];
j--;
}
else
{
cur->next=vec[i];
i++;
}
cur=cur->next;
count++;
}
cur->next=nullptr;
}
};