数据结构和算法

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

2023-11-15  本文已影响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;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读