力扣24 两两交换链表中的节点 Java版本
2023-12-13 09:44:15
题目
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
示例 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;//直接让head=latter,因为一会翻转完成之后,第二个节点就会变成头节点
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和latter
pre = pre.next;
if (pre != null) {
latter = pre.next;
}
}
return head;
}
}
文章来源:https://blog.csdn.net/m0_47066863/article/details/134942219
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!