zoukankan      html  css  js  c++  java
  • leetcode 【 Linked List Swap Nodes in Pairs 】 python 实现

    题目:

    Swap Nodes in Pairs

    Given a linked list, swap every two adjacent nodes and return its head.

    For example,
    Given 1->2->3->4, you should return the list as 2->1->4->3.

    Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

    代码:oj测试164ms通过

     1 # Definition for singly-linked list.
     2 # class ListNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.next = None
     6 
     7 class Solution:
     8     # @param a ListNode
     9     # @return a ListNode
    10     def swapPairs(self, head):
    11         
    12         if head is None or head.next is None:
    13             return head
    14         
    15         dummyhead = ListNode(0)
    16         dummyhead.next = head
    17         p = dummyhead
    18         
    19         while p.next is not None and p.next.next is not None:
    20             tmp = p.next.next.next
    21             p.next.next.next = p.next
    22             p.next = p.next.next
    23             p.next.next.next = tmp
    24             p = p.next.next
    25             
    26             
    27         return dummyhead.next

    思路

    1. 建立一个虚表头hummyhead 这样方便操作一些

    2. p.next始终指向要交换的下一个元素的位置

    3. 先保存p.next.next.next,再移动p,p.next,p.next.next,p.next.next.next:先动p.next.next.next再动其他的。

    小白我一开始先动的是p,p.next结果后面的p.next.next就丢了,其他小白别陷入这个误区,高手请略过。

    Tips: 动了哪个指针,就把哪个指针上面打个×;添加了哪个指针,就在两个点之间加一根线;画画图就出来了,别光看着不动笔。

    又做了一遍 第二次ac的 小失误了

     1 # Definition for singly-linked list.
     2 # class ListNode:
     3 #     def __init__(self, x):
     4 #         self.val = x
     5 #         self.next = None
     6 
     7 class Solution:
     8     # @param a ListNode
     9     # @return a ListNode
    10     def swapPairs(self, head):
    11         if head is None or head.next is None:
    12             return head
    13         
    14         dummpyhead = ListNode(0)
    15         dummpyhead.next = head
    16         
    17         p = dummpyhead
    18         
    19         while p.next is not None and p.next.next is not None:
    20             tmp = p.next
    21             p.next = p.next.next
    22             tmp.next = p.next.next
    23             p.next.next = tmp
    24             p = p.next.next
    25         
    26         return dummpyhead.next
  • 相关阅读:
    .NET中使用Redis总结 —— 1.Redis搭建
    Java 通过JDBC连接Mysql数据库
    5.java设计模式之建造者模式
    4.java设计模式之原型模式
    3.java设计模式之工厂模式
    2.java设计模式之单例模式
    1.java设计模式之七大设计原则和UML类图
    1.使用javax.mail, spring的JavaMailSender,springboot发送邮件
    1.7 栈(使用数组模拟)
    1.6 单向环形链表和约瑟夫问题
  • 原文地址:https://www.cnblogs.com/xbf9xbf/p/4186585.html
Copyright © 2011-2022 走看看