博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#Leetcode# 143. Reorder List
阅读量:5153 次
发布时间:2019-06-13

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

 

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

reorder it to: L0→LnL1→Ln-1→L2→Ln-2→…

You may not modify the values in the list's nodes, only nodes itself may be changed.

Example 1:

Given 1->2->3->4, reorder it to 1->4->2->3.

Example 2:

Given 1->2->3->4->5, reorder it to 1->5->2->4->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 || !head -> next || !head -> next -> next) return ;        ListNode *slow = head; ListNode *fast = head;        while(fast -> next && fast -> next -> next) {            slow = slow -> next;            fast = fast -> next -> next;        }                ListNode *dummy = slow -> next;        slow -> next = NULL;        dummy = reverseList(dummy);                while(head && dummy) {            ListNode *New = head -> next;            head -> next = dummy;            dummy = dummy -> next;            head -> next -> next = New;            head = New;        }    }        ListNode *reverseList(ListNode *head) {        if(!head || !head -> next) return head;        ListNode *New = reverseList(head -> next);        head -> next -> next = head;        head -> next = NULL;        return New;    }};

  快慢指针把链表从中间分开然后反转链表 之后把两个链表合并 希望今天出门剪头发之前 Leetcode 刷到 200

 

转载于:https://www.cnblogs.com/zlrrrr/p/10406961.html

你可能感兴趣的文章
十种基本排序算法
查看>>
hdu 2089 数位dp入门
查看>>
I/O的一些简单操作
查看>>
Handbook之012:函数类别构型
查看>>
php取整函数ceil,floor,round,intval的区别
查看>>
局部富文本
查看>>
例题6-7 树的层次遍历
查看>>
2019-2-15 日记
查看>>
那些年我们跳过的 IE坑
查看>>
产生式模型和判别式模型
查看>>
2015.10.13课堂
查看>>
国内最火5款Java微服务开源项目
查看>>
[国嵌攻略][038][时钟初始化]
查看>>
C#格式化字符串
查看>>
剑指offer——二叉搜索树的后序遍历序列
查看>>
2016集训测试赛(二十四)Problem C: 棋盘控制
查看>>
稳定土厂拌设备控制系统-基本介绍(图)
查看>>
测试计划
查看>>
POJ 3101 Astronomy (角速度啊,高中物理啊。。。T_T)
查看>>
linux 删除和安装java
查看>>