Leetcode(java,python题解):24.两两交换链表中的节点

mac2025-01-22  41

24.两两交换链表中的节点

题目描述 Leetcode:https://leetcode-cn.com/problems/swap-nodes-in-pairs/ 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

示例:

给定 1->2->3->4, 你应该返回 2->1->4->3.

解题思路 非递归解法,pre的next节点为头结点,设置temp节点。遍历链表如果存在相邻两个结点就交换,否则结束遍历。

java代码

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { ListNode pre = new ListNode(0); pre.next = head; ListNode temp = pre; while(temp.next != null && temp.next.next != null){ ListNode start = temp.next, end = temp.next.next; temp.next = end; start.next = end.next; end.next = start; temp = start; } return pre.next; } }

python代码

# 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: pre = ListNode(0) pre.next = head tmp = pre while tmp.next != None and tmp.next.next != None: start, end = tmp.next, tmp.next.next tmp.next = end start.next = end.next end.next = start tmp = start return pre.next
最新回复(0)