難度:中等
給定一個鏈表,兩兩交換其中相鄰的節點,並返回交換後的鏈表。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例:
給定
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