双指针从广义上来说,是指用两个变量在线性结构上遍历而解决的问题。狭义上说,
- 对于数组,指两个变量在数组上相向移动解决的问题;
- 对于链表,指两个变量在链表上同向移动解决的问题,也称为「快慢指针」问题。
// 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,// 即链表的尾节点是倒数第1个节点var getKthFromEnd = function(head, k) {let [fast, slow] = [head, head]while (fast && k>0) { // 快指针先走k步[fast, k] = [fast.next, k-1]}while (fast) { // 快慢指针同时走,快指针走完时,慢指针刚好走了n-k步[fast, slow] = [fast.next, slow.next]}return slow};
