赞
踩
给定一个单链表 L 的头节点 head ,单链表 L 表示为:
L0 → L1 → … → Ln - 1 → Ln
请将其重新排列后变为:
L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例 1:
输入:head = [1,2,3,4]
输出:[1,4,2,3]
示例 2:
输入:head = [1,2,3,4,5]
输出:[1,5,2,4,3]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reorder-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
- class Solution {
- public:
- void reorderList(ListNode *head) {
- if (head == nullptr) {
- return;
- }
- vector<ListNode *> vec;
- ListNode *node = head;
- while (node != nullptr) {
- vec.emplace_back(node);
- node = node->next;
- }
- int i = 0, j = vec.size() - 1;
- while (i < j) {
- vec[i]->next = vec[j];
- i++;
- if (i == j) {
- break;
- }
- vec[j]->next = vec[i];
- j--;
- }
- vec[i]->next = nullptr;
- }
- };
-
- 作者:LeetCode-Solution
- 链接:https://leetcode-cn.com/problems/reorder-list/solution/zhong-pai-lian-biao-by-leetcode-solution/
- 来源:力扣(LeetCode)
- 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。