力扣 | 24. 两两交换链表中的节点

两两交换链表中的节点

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

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

输入:head = 1->2->3->4->5->NULL

输出:2->1->4->3->5->NULL

java 复制代码
 public ListNode swapPairs(ListNode head) {
        if (head == null || head.next == null) return head; //确保了以下代码至少是两个节点

        ListNode dummyNode = new ListNode(-1);
        dummyNode.next = head;

        ListNode prev = dummyNode;
        ListNode first = head;
        ListNode second = head.next;
        while (second != null) {//确保两个节交换点中只有first这一个节点就不交换
            ListNode next = second.next;
            prev.next = second;
            second.next = first;//second是两个需要交换节点的最后面的那个节点
            first.next = next;

            prev = first;//prev总是总是两个
            first = next;
            if (first == null) break;
            second = first.next;
        }
        return dummyNode.next;
    }
相关推荐
CoovallyAIHub2 小时前
181小时视频丢给GPT-5,准确率只有15%——南大联合NVIDIA等五校发布多模态终身理解数据集
深度学习·算法·计算机视觉
CoovallyAIHub3 小时前
CVPR 2026 | GS-CLIP:3D几何先验+双流视觉融合,零样本工业缺陷检测新SOTA,四大3D工业数据集全面领先!
深度学习·算法·计算机视觉
xlp666hub3 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
有意义5 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
xlp666hub6 小时前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
用户726876103376 小时前
解放双手的健身助手:基于 Rokid AR 眼镜的运动计时应用
算法
Wect7 小时前
LeetCode 17. 电话号码的字母组合:回溯算法入门实战
前端·算法·typescript
xlp666hub1 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
ZhengEnCi1 天前
08c. 检索算法与策略-混合检索
后端·python·算法
程序员小崔日记1 天前
大三备战考研 + 找实习:我整理了 20 道必会的时间复杂度题(建议收藏)
算法·408·计算机考研