难度:中等
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定
1->2->3->4
, 你应该返回
2->1->4->3
.
思路:我这个编写链表题...最喜欢的就是先转成数组,然后操作数组后再转回链表...数组的两两交换应该没问题吧~
代码如下:
# 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
"""
#判空
if head is None:
return head
#将结点转化为数组
list1=[]
while(head):
list1.append(head.val)
head=head.next
#两两交换数组
for i in range(len(list1)/2):
x=list1[2*i+1]
list1[2*i+1]=list1[2*i]
list1[2*i]=x
#创造新的带头结点指针,用于数组转链表
List2=ListNode(-1)
List3=List2
for i in range(len(list1)):
List2.next=ListNode(list1[i])
List2=List2.next
return List3.next