给你链表的头节点 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个节点 - 交换两个节点的值









网友评论