美文网首页数据结构和算法
链表 - LeetCode 交换链表中的节点

链表 - LeetCode 交换链表中的节点

作者: 我阿郑 | 来源:发表于2023-11-15 21:07 被阅读0次

给你链表的头节点 head 和一个整数 k

交换链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。

输入:head = [1,2,3,4,5], k = 2
输出:[1,4,3,2,5]
image.png

值交换:找到倒数第k个节点和第k个节点后进行值交换

class Solution {
    public ListNode swapNodes(ListNode head, int k) {
        ListNode former = head;// 第k个节点
        ListNode latter = head;// 倒数第k个节点
        // 移动到第k个节点
        for(int i = 1; i < k; i++){
            former = former.next;
        }
        ListNode cur = former;
        while(cur.next != null){
            cur = cur.next;
            latter = latter.next;
        }
        // 交换左右两个节点的值
        int temp = latter.val;
        latter.val = former.val;
        former.val = temp;
        return head;
    }
}
  • 先移动到第k个节点
  • cur.next == null 时,latter 所指的节点,就是倒数第k个节点
  • 交换两个节点的值

相关文章

网友评论

    本文标题:链表 - LeetCode 交换链表中的节点

    本文链接:https://www.haomeiwen.com/subject/bkfewdtx.html