算法12(链表)-两两交换链表

题目描述
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

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

其实我对于这道题的理解也不是特别的深刻,这道题采用递归是最简单的,下面是大佬对于递归的理解
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

文章标题:算法12(链表)-两两交换链表

字数:372

本文作者:一叶知秋

发布时间:2020-07-04, 16:20:11

最后更新:2020-07-04, 16:21:03

原始链接:http://yoursite.com/2020/07/04/arithmtic/12-%E9%93%BE%E8%A1%A8/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏

相册 github