赞
踩
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
题解:使用递归,分别传入 1、3 奇数节点,传1返回2,传3返回4,将传入的节点下一个指针指向返回的节点;再将节点2的指针指向1,返回节点2。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { if(head == null || head.next == null){ return head; } // 存储传入的下一节点,例如传入节点1,保存的节点是节点2 ListNode next = head.next; // 递归,将传入的下一节点指向下下个节点, // 例如head是节点1,next.next则为第三个节点 head.next = swapPairs(next.next); // 例如传入的head为节点1,则next为节点2, // 将节点2的下一个节点指向节点1,进行交换 next.next = head; // 返回节点2 return next; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。