广州网站建站平台,wordpress第二步500,简单的个人主页网站制作html,哪个网站有帮忙做公开课课件文章目录 题目解题方法Code 题目
给你一个链表#xff0c;两两交换其中相邻的节点#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题#xff08;即#xff0c;只能进行节点交换#xff09;。
示例 1#xff1a;
输入#xff1a;hea… 文章目录 题目解题方法Code 题目
给你一个链表两两交换其中相邻的节点并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题即只能进行节点交换。
示例 1
输入head [1,2,3,4] 输出[2,1,4,3] 示例 2
输入head [] 输出[] 示例 3
输入head [1] 输出[1]
提示
链表中节点的数目在范围 [0, 100] 内 0 Node.val 100
解题方法 在下面代码中详细注释了 Code
class Solution {public ListNode swapPairs(ListNode head) {//如果是空链或者只有一个节点那么直接返回头节点就行if (head null || head.next null) {return head;}ListNode pre head;//pre是最初靠前的节点ListNode latter head.next;//latter是最初靠后的节点head latter;//直接让headlatter,因为一会翻转完成之后第二个节点就会变成头节点ListNode temp null;//防断链用于之前已经反转好的部分与后边部分的链接while (pre ! null pre.next ! null) {//只剩一个节点或者不剩节点就停止反转//接下来两行是互换位置pre.next latter.next;latter.next pre;if (temp ! null) {//temp为空则表明是第一次翻转完前面没有需要链接的部分temp.next latter;}temp pre;//更新pre和latterpre pre.next;if (pre ! null) {latter pre.next;}}return head;}
}