博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Leetcode】【Medium】Reorder List
阅读量:5307 次
发布时间:2019-06-14

本文共 1666 字,大约阅读时间需要 5 分钟。

Given a singly linked list LL0→L1→…→Ln-1→Ln,

reorder it to: L0→LnL1→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}.

 

解题思路:

设置一个指针mid指向链表的中间结点;

将mid之后的半个链表进行反转,反转后的链表insert;

将insert中的结点挨个插入前半段链表中;

代码:

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     void reorderList(ListNode* head) {12         if (!head || !head->next || !head->next->next)13             return;14         ListNode* ctrl = head;15         ListNode* mid = head;16         ListNode* insert = NULL;17         18         while (ctrl->next && ctrl->next->next) {19             ctrl = ctrl->next->next;20             mid = mid->next;21         }22         23         insert = reverseList(mid->next);24         mid->next = NULL;25         ctrl = head;26         27         while (insert) {28             ListNode* t = ctrl->next;29             ctrl->next = insert;30             insert = insert->next;31             ctrl->next->next = t;32             ctrl = t;33         }34         35         return;36     }37     38     ListNode* reverseList(ListNode* head) {39         if (!head->next)40             return head;41         ListNode* cur = NULL;42         ListNode* next = head;43         ListNode* left = NULL;44         while (next) {45             left = next->next;46             next->next = cur;47             cur = next;48             next = left;49         }50         return cur;51     }52 };

 

转载于:https://www.cnblogs.com/huxiao-tee/p/4513499.html

你可能感兴趣的文章
【CV论文阅读】Image Captioning 总结
查看>>
Ubuntu使用adb连接android手机失败unknown的解决的方法
查看>>
测试开发基本面试知识
查看>>
const和volatile
查看>>
匈牙利算法 cogs 886. [USACO 4.2] 完美的牛栏
查看>>
Fragment之一:Fragment入门
查看>>
服务器启动完成执行定时任务Timer,TimerTask
查看>>
windows下编译安装BOOST
查看>>
Cookie安全测试
查看>>
数据结构C语言版车牌号的查询与排序
查看>>
Centos 5 忘记root密码,可以使用单用户模式修改密码
查看>>
WIN7 64位系统安装JDK并配置环境变量
查看>>
Altera DDR2 IP核学习总结2-----------DDR2 IP核的生成
查看>>
baidu patchrom项目 内存溢出解决方法
查看>>
简单的C#TCP协议收发数据示例
查看>>
labview图形和图表的类型
查看>>
Android 缓存
查看>>
[bzoj1910] [Ctsc2002] Award 颁奖典礼
查看>>
【科普】电池容量相同 为何笔记本电池的体积比手机大得多
查看>>
UEFI引导模式
查看>>