面试金典题2.2

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

复制代码
输入: 1->2->3->4->5 和 k = 2
输出: 4

本题的思路其实很简单,总共n个数,找倒数第k个数,其实就是找第n-k个数。主要的问题是这个题放在链表里面该如何解决。关于链表的题,其中最常用的方法就是双指针。定义两个指针,都指向头结点,让其中一个指针先移动k次,然后让两个指针同时开始移动,直到先移动的那个指针指向空,则后移动的指针便刚好指向倒数第k个结点。

leetcode代码

cpp 复制代码
/**
 * 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 *p=head;
        ListNode *q=head;
        while(k--){
            q=q->next;
        }
        while(q!=nullptr){
            p=p->next;
            q=q->next;
        }
        return p->val;
    }
};
相关推荐
铭毅天下1 分钟前
EasySearch Rules 规则语法速查手册
开发语言·前端·javascript·ecmascript
承渊政道9 分钟前
【优选算法】(实战体会位运算的逻辑思维)
数据结构·c++·笔记·学习·算法·leetcode·visual studio
YMWM_16 分钟前
print(f“{s!r}“)解释
开发语言·r语言
愤豆19 分钟前
05-Java语言核心-语法特性--模块化系统详解
java·开发语言·python
bksczm20 分钟前
文件流(fstream)
java·开发语言
NGC_661121 分钟前
Java 线程池阻塞队列与拒绝策略
java·开发语言
Frostnova丶22 分钟前
LeetCode 2573. 找出对应 LCP 矩阵的字符串
算法·leetcode·矩阵
小碗羊肉33 分钟前
【从零开始学Java | 第二十二篇】List集合
java·开发语言
m0_7167652335 分钟前
C++提高编程--STL常用容器(set/multiset、map/multimap容器)详解
java·开发语言·c++·经验分享·学习·青少年编程·visual studio
承渊政道42 分钟前
【优选算法】(实战推演模拟算法的蕴含深意)
数据结构·c++·笔记·学习·算法·leetcode·排序算法