leetcode-24-链表节点两两交换

    科技2026-03-10  4

    给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

    示例:

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

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    方法一:采用迭代法
    public ListNode swapPairs(ListNode head) { ListNode resNode = new ListNode(-1); resNode.next = head; ListNode preNode = resNode; /** * 如果head为空的话,resNode.next返回null * 如果head.next为空的话,resNode.next也没有可以交换的节点,不做任何操作 */ while ((head != null) && (head.next != null)){ ListNode first = head; ListNode second = head.next; preNode.next = second; first.next = second.next; second.next = first; preNode = first; head = preNode.next; } return resNode.next; }
    方法二:采用递归(推荐)
    public static ListNode swapPairs(ListNode head) { if (head == null || head.next == null){ return head; } ListNode first = head; ListNode second = head.next; first.next = swapPairs(second.next); second.next = first; return second; }
    Processed: 0.010, SQL: 9