美文网首页
LC吐血整理之Linkedlist篇

LC吐血整理之Linkedlist篇

作者: amilyxy | 来源:发表于2019-09-25 10:10 被阅读0次

    \color{red}{所有题解方法请移步}github-Leecode_summary

    206.反转链表

    看到一个很有意思的答案

    class Solution:
        def reverseList(self, head):
            p, rev = head, None
            while p:
                rev, rev.next, p = p, rev, p.next
            return rev
    

    Tips1: Python的连续赋值
    python中可以使用连续赋值的方式来一次为多个变量进行赋值的

    >>> x=y=z=1 等价于 x, y, z = 1, 1, 1
    # 需注意 如果赋值为列表或者字典
    >>> x=y=z=[1,2,3]
    >>> a[1] = 4   # x,y,z 都是指向列表的指针 
    b = [1,4,3]
    

    Tips2: Python的多元赋值
    python的多元赋值原理: tuple的元组封装和序列拆封

    >>> t = ‘hello’, ‘amilyxy’, ‘bye’  # 元组封装 (‘hello’, ‘amilyxy’, ‘bye’) 
    >>> x, y, z = t     # 序列拆封   要求左侧变量数目与序列元素数目相等
    x:'hello' y:'amilyxy' z:'bye'
    # 多元赋值变量交换:先将等号右边进行元组封装
    >>> x,y,z = z,x,y   # x,y,z = (x:'bye','hello','amilyxy')
    x:'bye' y:'hello' z:'amilyxy'   
    

    141.环形链表

    其实这个题目我是这样想的,给链表实例对象添加一个属性,记录是否被访问到了 ,但其实本质也是把链表破坏了,有点不太好==
    感觉双指针是比较好的解决方法,指针slow每次走一步,指针fast每次走两步,如果他们最终遇上了,就说明链表中有环

    24.两两交换链表中的节点

    看看就好,变量太多,不推荐


    我的迭代解决方案

    328.奇偶链表

    刚开始根据数学归纳法找规律,写了很久,奇链表好不容易提取出来了,偶链表就乱了,难,真的难... 然后一直绕在原地操作,题解方法想都没想到,以为是链表就摆在那里了,一点都不能动....
    代码在github,多多思考消化~~

    92.反转链表II

    一开始做的很乱,转了一次之后,后面的就乱套了,然后看了下反转链表I,结合反转链表I做出来了,哎,之前做的都忘掉了....
    大致思路:

    linked_2.png

    21.合并两个有序链表

    剑指offer上也出现了这个题,可以掌握两种做法:① 递归方法(代码简洁,当链表过长时不适用)② 迭代方法,都可以写一下熟悉。
    今日份的Tips:
    递归题解中强调了python的return语句中orand的区别:and 和 or 都有提前截至运算的功能

    • return a and b:表达式a为 False,那么表达式b将被跳过,返回表达式a,例如:return [] and 'amilyxy' = return [];表达式a为True,返回表达式b的值。
    • return a or b:如果表达式a已经为 True,那么表达式b将被跳过,直接返回表达式a的结果,例如return 1 or 2 = return 1;如果表达式a为False,返回表达式b的值。
      注意,这里的return不再return True or False 而是返回表达式的值。

    23.合并k个有序链表

    21题的扩展版,按照21题的迭代方法稍微修改一下,运行到130个实例超出时间限制...后来加了一个判断条件还是超时==
    今日份的Tips-1:heapq
    贴几个知识链接:
    1.数据结构-堆,我以前都是把堆栈视为同一个概念,naive啊。
    2.Python文档-堆队列算法堆常用来实现优先队列算法,优先队列让你能够以任意顺序添加对象,并随时找出(删除)最小的元素,比min()高效,python中没有堆这个数据结构,但heapq模块提供了堆队列算法的实现,也称为优先队列算法。

    138.复制带有随机指针的链表

    想清楚操作还是不难的,就是一个指针的指向问题。

    相关文章

      网友评论

          本文标题:LC吐血整理之Linkedlist篇

          本文链接:https://www.haomeiwen.com/subject/stakuctx.html