LeetCode题解(python)
24. 两两交换链表中的节点
题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
解题心得
只要明确链表的结构内容,一步一步的交换节点即可
本程序使用最基础的链表来写,读下来就是链表的基本内容。没有递归之类的方法。
解题代码
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def swapPairs(self, head: ListNode) -> ListNode:
if head == None or head.next == None:
return head
rel = head.next
p = head
while p!=None:
if p.next == None:
break
if p.next!=None and p.next.next == None:
p1 = p.next
p1.next = p
p.next = None
break
if p.next != None and p.next.next != None and p.next.next.next == None:
p1 = p.next
p2 = p.next.next
p1.next = p
p.next = p2
p2.next = None
break
p1 = p.next
p2 = p.next.next
p3 = p.next.next.next
p1.next = p
p.next = p3
p = p2
return rel

该博客是LeetCode题解,用Python解决“两两交换链表中的节点”问题。题目要求给定链表两两交换相邻节点并返回结果,且不能仅改节点值。解题心得是明确链表结构逐步交换节点,代码使用基础链表,未用递归方法。
1229

被折叠的 条评论
为什么被折叠?



