LeetCode算法题python解法:24. Swap Nodes in Pairs

Posted slarker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode算法题python解法:24. Swap Nodes in Pairs相关的知识,希望对你有一定的参考价值。


原题:

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

Example:

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

Note:

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

中文翻译:

给定链表,交换每两个相邻节点并返回其头部。

例:

给定1->2->3->4,您应该将列表作为2->1->4->3

注意:

  • 您的算法应该只使用恒定的额外空间。
  • 您可能无法修改列表节点中的值,只能更改节点本身。

解题思路:该题非常简单,给定链表两两对调然后重新链接,返回新链表的头部即可。将链表遍历添加到一个列表linklist中,然后利用索引进行两两对调,最后重新连接这个链表,然后linklist[0]

代码如下:

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
class Solution:
    def swapPairs(self, head):         #思路非常简单,把链表遍历出来放到列表里,然后再两两对调,在重新链接链表。
        linklist = []
        x, y = 0, 1

        while head != None:  #将链表遍历到一个linklist列表中
            linklist.append(head)
            head=head.next
        if len(linklist)<1:   #这里排除一下特殊情况,如果给的链表为空,则直接返回空值
            return linklist

        while y <= len(linklist)-1:      #这里进行两两对调
            linklist[x], linklist[y] = linklist[y], linklist[x]
            x, y = x + 2, y + 2

        for i in range(len(linklist)-1):        #将对调后的linklist链接成新的链表
            linklist[i].next=linklist[i+1]
        linklist[-1].next=None                   #设置链表最后一个值的末端为空值
        return linklist[0]

 

以上是关于LeetCode算法题python解法:24. Swap Nodes in Pairs的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode算法题python解法:17. Letter Combinations of a Phone Number

LeetCode算法题python解法:25. Reverse Nodes in k-Group

LeetCode算法题-Find the Difference(Java实现-五种解法)

算法——查找排序相关面试题和leetcode使用

LeetCode算法题-Move Zeroes(Java实现-三种解法)

LeetCode算法题-Valid Perfect Square(Java实现-四种解法)