zoukankan      html  css  js  c++  java
  • 链表成对反转

    # Definition for singly-linked list.
    # class ListNode(object):
    #     def __init__(self, x):
    #         self.val = x
    #         self.next = None

    class Solution(object):
        def swapPairs(self, head):
            """
            :type head: ListNode
            :rtype: ListNode
            """
         """
         思路:
          1、需要定义一个变量存储新的head节点
          2、判断循环的判断条件:后面两个节点同时存在
          3、每次循环需要操作的元素
            pre:当前第一个节点的前驱节点
            a:当前第一个节点
            b:当前第二个节点(a的后继节点)
            b.next:当前第二个节点的 后继
            所以,每次循环共计涉及 4个节点,3个指针 : 由 pre -> a -> b -> (c = b.next) 变换为 pre -> b -> a -> c
            
          4、每次循环的最后,需要更新变量 pre 的指向(也就是pre = a),为下一次循环准备工作。
                   
         """
            pre = self
            # 定义了next变量,用于存放head节点
            self.next = head
            while pre.next and pre.next.next:
                a = pre.next
                b = pre.next.next
                # pre->a->b->c  变换为 pre->b->a->c
                pre.next ,b.next,a.next = b,a,b.next

                pre = a
            
            # 返回head,新的head节点存储在self对象的next变量中
            return self.next
  • 相关阅读:
    python的进程与线程
    推荐一个GOLANG入门很好的网址
    为什么Python 3.6以后字典有序并且效率更高?
    git实用指南
    常用正则总结
    简单小结密码学入门知识点
    什么是k8s
    win10下apache superset的使用
    Maven工作记录
    JDK下载地址和安装
  • 原文地址:https://www.cnblogs.com/wl413911/p/12921345.html
Copyright © 2011-2022 走看看