两两交换链表中的节点-链表24-python&C++

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)。

猜你喜欢

转载自blog.csdn.net/VaccyZhu/article/details/113809656