赞
踩
题目:给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 1:
输入:head = [1,2,3,4] 输出:[2,1,4,3]
示例 2:输入:head = [] 输出:[]
示例 3:输入:head = [1] 输出:[1]
提示:
链表中节点的数目在范围 [0, 100] 内 0 <= Node.val <= 100
程序说明:若没有使用哑节点,代码就如下面的错误代码,会出现若链表断开的情况(具体根据代码画图可知)
全部代码:
正确代码:
# 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: ListNode) -> ListNode: p = ListNode(0) p.next = head cur = p while cur.next and cur.next.next: node1 = cur.next node2 = cur.next.next cur.next = node2 node1.next = node2.next node2.next = node1 cur = node1 return p.next
错误代码:
# 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: ListNode) -> ListNode: if not head or not head.next: return head p = head cur = head.next q = cur.next while cur.next: p.next = q cur.next = p p = q cur = p.next q = cur.next cur.next = p return head
题目来源:力扣(leetcode)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。