链表中倒数第k个节点
解题思路:
-
初始化快慢指针 fast、slow;
-
fast 先向后移动 k 个位置,然后 fast 和 slow 再一起向后移动;
-
当 fast 走到最后的时候,slow 的位置就是倒数第 k 个位置;
复杂度:
-
时间复杂度:O(N),N 为链表长度;
-
空间复杂度:O(1);
代码实现:
function getKthFromEnd(head: ListNode | null, k: number): ListNode | null {
let slow = head;
let fast = head;
while (k-- > 0) fast = fast.next;
while (fast !== null) {
fast = fast.next;
slow = slow.next;
}
return slow;
};
剑指 Offer 48.最长不含重复字符的子字符串
上一篇