链表中相邻的结点交换
程序员文章站
2022-05-06 11:01:36
...
看到了一个很厉害的递归,逐行注解一下
写递归不要关注里面的内容,只关注它的功能。
内容的话,想好终止条件,和最后一次循环的操作思路。
比如这个递归到最深的一层就是,head所指->next所指->null
最后要得到 next所指 -> head所指 -> null
/**
* 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;
ListNode next = head.next;
//就把后半部分当作next后面已经交换好的链表
// head所指结点 -> next所指结点 -> 交换好的
head.next = swapPairs(next.next);
next.next = head;
return next;
}
}
上一篇: 笑破肚皮夫妻荤笑话
下一篇: 生活小幽默,伴你过周未.