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

本文共 1406 字,大约阅读时间需要 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.

解题思路:我的方法是用一个list保存链表后半部分的节点,接下来从头开始遍历链表,把list中的第一个节点插入到原链表的第一个节点后,第二个插入到原链表的第二个节点后面,直到list全部节点都插入到原链表为止。

代码如下:

# Definition for singly-linked list.# class ListNode(object):#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution(object):    def reorderList(self, head):        """        :type head: ListNode        :rtype: None Do not return anything, modify head in-place instead.        """        if head == None:            return        mid,tail = head,head        while tail != None:            tail = tail.next            if tail == None:                break            tail = tail.next            if tail == None:                break            mid = mid.next        l = []        second_half = mid.next        mid.next = None        while second_half != None:            l.insert(0,second_half)            second_half = second_half.next        current = head        while len(l) > 0:            node = l.pop(0)            node.next = current.next            current.next = node            current = current.next.next

 

转载于:https://www.cnblogs.com/seyjs/p/10559919.html

你可能感兴趣的文章
C#方法拓展
查看>>
MySql.Data.dll的版本
查看>>
Linux系统磁盘管理
查看>>
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
InfluxDB 的UTC时间问题与简单的持续查询语句
查看>>
领扣-62 不同路径 Unique Paths MD
查看>>
初接触php,遇到一个低级问题
查看>>
团队之道
查看>>
打造Redux中间件
查看>>
Sharding-Sphere成长记——写在分布式数据库代理端里程碑版本3.0.0发布之际
查看>>
仅售99美元!英伟达发布最小AI计算机Jetson Nano
查看>>
Netflix混沌工程手册Part 2:混沌工程原则
查看>>
C# 7.3新特性一览
查看>>
C# 8新提案让泛型Attribute成为现实
查看>>
微软宣布开源WPF、WinForms和WinUI
查看>>
与Susan Fowler探讨生产就绪微服务之问答
查看>>
网络协议必会知识点:互联网网络分层
查看>>