博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python/M/143】Reorder List
阅读量:2171 次
发布时间:2019-05-01

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

题目

这里写图片描述

思路分析

这个题目的思想是比较巧妙的,拆解来看都是我们熟悉的三种基本的链表操作

1. 利用快慢指针将链表分为前后两部分(若总长为奇数,则前半部分多1)
2. 将后半部分链表进行翻转
3. 重新将链表连接在一起

链表记得画图

链表记得画图!
链表记得画图!

实现代码

# 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: void Do not return anything, modify head in-place instead.        """        # 思路一开始就错了,自己是个太暴力的人,但是机器不应该这样        # 0个1个两个节点不需要进行这个操作        if head and head.next and head.next.next:            # 将链表一分为二            fast = slow = head            while fast and fast.next:                fast = fast.next.next                slow = slow.next            head1,head2 = head,slow.next            slow.next = None            # 翻转后半部分链表            dummy = ListNode(0)            dummy.next = head2            p = head2.next            head2.next = None            while p:                tmp,p = p,p.next                tmp.next = dummy.next                dummy.next = tmp            head2 = dummy.next            # 重新将两部分连接起来            p1 = head1;             p2 = head2            while p2:                tmp1 = p1.next; tmp2 = p2.next                p1.next = p2; p2.next = tmp1                p1 = tmp1; p2 = tmp2
你可能感兴趣的文章
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机11:Java内存异常原理与实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>
Spring源码剖析3:Spring IOC容器的加载过程
查看>>
Spring源码剖析4:懒加载的单例Bean获取过程分析
查看>>
Spring源码剖析5:JDK和cglib动态代理原理详解
查看>>
Spring源码剖析6:Spring AOP概述
查看>>
Spring源码剖析7:AOP实现原理详解
查看>>
Spring源码剖析8:Spring事务概述
查看>>
Spring源码剖析9:Spring事务源码剖析
查看>>
重新学习Mysql数据库1:无废话MySQL入门
查看>>
探索Redis设计与实现2:Redis内部数据结构详解——dict
查看>>
探索Redis设计与实现3:Redis内部数据结构详解——sds
查看>>
探索Redis设计与实现4:Redis内部数据结构详解——ziplist
查看>>
探索Redis设计与实现6:Redis内部数据结构详解——skiplist
查看>>
探索Redis设计与实现5:Redis内部数据结构详解——quicklist
查看>>
探索Redis设计与实现8:连接底层与表面的数据结构robj
查看>>