LeetCode1721. 交换链表中的节点
给你链表的头节点 head 和一个整数 k 。
交换 链表正数第 k 个节点和倒数第 k 个节点的值后,返回链表的头节点(链表 从 1 开始索引)。

定义两个指针fast和slow,fast先往前走k个节点,记录下这个即将被交换的节点,然后slow开始走,当fast走到末尾的时候,slow正好走到倒数第k个节点,然后与前面的第k个节点交换,return head;
var swapNodes = function(head, k) { if(head.next === null) return head; let temp = new ListNode(0,null); temp.next = head; let fast = slow = temp; let nodek; let i = 0; while(slow) { if(i===k){ nodek = fast; } if(fast) fast = fast.next; if(i>=k) { //console.log(fast,slow) slow = slow.next; if(fast === null ) { let t = slow.val; slow.val = nodek.val; nodek.val = t; break; } } i++; } return head; };
浙公网安备 33010602011771号