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
  • 相关阅读:
    debounce
    react-xiguan
    备忘录
    ie导出问题
    umi 动态路由配置
    tsconfig
    关于vue 和react 中的hash与锚点冲突问题
    lodash
    pyplot绘图
    Numpy实现图像变换
  • 原文地址:https://www.cnblogs.com/xbf9xbf/p/4186585.html
Copyright © 2011-2022 走看看