重庆奉节网站建设公司哪家好,食品网站建设书,建筑工程网布设,wordpress炫简主题一刷~ 给你一个链表#xff0c;两两交换其中相邻的节点#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题#xff08;即#xff0c;只能进行节点交换#xff09;。 思路#xff1a;
使用两个指针p1/p2#xff0c;分别记录需要交换的两…一刷~ 给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换。 思路
使用两个指针p1/p2分别记录需要交换的两个节点。另外使用一个指针last记录两个节点的上一个节点。 last.next p2p1.next p2.next记录p2后面的值如果直接p2.next p1则p2后面待交换的节点会丢失last.next.next p1完成交换。last指针往后移两个重新生成p1和p2。
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val0, nextNone):
# self.val val
# self.next next
class Solution:def swapPairs(self, head: Optional[ListNode]) - Optional[ListNode]:if not head or not head.next:return headp ListNode(0)p.next headp1, p2, last head, head.next, pwhile p1 and p2:last.next p2p1.next p2.nextlast.next.next p1last p1if last.next:p1 last.nextelse:breakif p1.next:p2 p1.nextelse:breakreturn p.next