创业网站模板免费下载,安卓app市场,手机免费制作app平台,深圳的网站建设公司 湖南岚鸿一、题目
给你一个链表#xff0c;两两交换其中相邻的节点#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题#xff08;即#xff0c;只能进行节点交换#xff09;。 示例 1#xff1a; 输入#xff1a;head [1,2,3,4]
输出#xf…一、题目
给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换。 示例 1 输入head [1,2,3,4]
输出[2,1,4,3]示例 2
输入head []
输出[]示例 3
输入head [1]
输出[1]二、思路解析
首先提醒一下链表的题大家千万不要忘记递归解法因为基本都是大问题可以拆解成相同的子问题的符合递归的条件。
上来就可以先判断一下边界情况头节点为空或者只有一个节点均返回头节点即可。
然后在每一次递归中我们要做的就是利用一个节点 tmp 来交换前后节点的指向即可。 三、完整代码
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if(head null || head.next null){return head;}ListNode tmp swapPairs(head.next.next);ListNode ret head.next;ret.next head;head.next tmp;return ret;}
} 以上就是本篇博客的全部内容啦如有不足之处还请各位指出期待能和各位一起进步