Python
不懂就画图,将不同步骤的操作展现出来。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:
def swapPairs(self, head):
pre = ListNode(100,head)
temp = pre
while temp.next and temp.next.next:
node1 = temp.next
node2 = node1.next
temp.next = node2
node1.next = node2.next
node2.next = node1
temp = node1
return pre.next
C++
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
ListNode * pre = new ListNode(100);
pre->next = head;
ListNode * temp = pre;
while(temp->next != nullptr && temp->next->next != nullptr){
ListNode * node1 = temp->next;
ListNode * node2 = node1->next;
temp->next = node2;
node1->next = node2->next;
node2->next = node1;
temp = node1;
}
return pre->next;
}
};
复杂度分析:
- 时间复杂度:O(n),其中 n 是链表的节点数量。需要对每个节点进行更新指针的操作。
- 空间复杂度:O(1)。