题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
其实我对于这道题的理解也不是特别的深刻,这道题采用递归是最简单的,下面是大佬对于递归的理解
https://lyl0724.github.io/2020/01/25/1/
再来说说我是怎么理解这道题的,首先既然要交换,肯定是两个一组才有机会进行交换,在进行交换的时候,本节点总是前一个当作后一个节点的next节点,后一节点作为本节点的头节点。递归调用只需要知道这几个条件:1.什么时候递归调用结束,2.本次递归调用给下层需要返回什么,递归调用结束时间。
下面的就是我的代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){return head;}
ListNode next = head.next;
head.next = swapPairs(next.next);
next.next = head;
return next;
}
主要是一个算法,没有写具体的类
示例:
给定 1->2->3->4, 你应该返回 2->1->4->3.
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1371769065@qq.com