本文主要是介绍LeetCode OJ:Reorder List,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Reorder List
Total Accepted: 4205 Total Submissions: 22851 My SubmissionsGiven a singly linked list L: L0→L1→…→Ln-1→Ln,
reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…
You must do this in-place without altering the nodes' values.
For example,
Given {1,2,3,4}
, reorder it to {1,4,2,3}
.
/*** 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)return;stack<ListNode *> st;ListNode *p=head,*q=head;while(q!=NULL&&q->next!=NULL){p=p->next;q=q->next->next;}q=p->next;p->next=NULL;while(q!=NULL){st.push(q);q=q->next;}p=head;ListNode *t;while(p!=NULL){t=p;p=p->next;if(!st.empty()){t->next=st.top();st.top()->next=p;st.pop();}}}
};
这篇关于LeetCode OJ:Reorder List的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!