LeetCode (Reorder List)

来源:互联网 发布:mysql执行计划详解 编辑:程序博客网 时间:2024/06/18 14:02

Problem:

Given a singly linked list LL0L1→…→Ln-1Ln,
reorder it to: L0LnL1Ln-1L2Ln-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}.

Solution:

/** * 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 || !head->next) return;        vector<ListNode*> list;        while(head){            list.push_back(head);            head = head->next;        }        int n = list.size();        for(int i = 0; i < n / 2; i++){            list[i]->next = list[n - i - 1];            list[n - i - 1]->next = list[i + 1];        }        list[n / 2]->next = NULL;    }};


原创粉丝点击