刷题-力扣-面试题 02.02. 返回倒数第 k 个节点

题目链接

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。

注意:本题相对原题稍作改动

示例:

输入: 1->2->3->4->5 和 k = 2
输出: 4
说明:

给定的 k 保证是有效的。

题目分析

  1. 根据题目描述,获取倒数第k个节点元素
  2. 双指针,两个指针在链表头开始,一个指针先走k步,然后两个指针同时走
  3. 当快指针走到链表尾后,慢指针所指的就是倒数第k个节点

代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    int kthToLast(ListNode* head, int k) {
        ListNode* front = head;
        ListNode* rear = head;
        while (--k) {
            front = front->next;
        }
        while (front->next) {
            front = front->next;
            rear = rear->next;
        }
        return rear->val;
    }
};
posted @ 2022-01-16 11:30  韩亚光  阅读(21)  评论(0编辑  收藏  举报