面试金典题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;
    }
};
相关推荐
ECT-OS-JiuHuaShan4 小时前
哲学是迭代学,数学是拓扑学
开发语言·人工智能·学习·算法·机器学习·php·拓扑学
All for pursuit.4 小时前
【数组-5】560.和为K的子数组
数据结构·c++·算法·leetcode
影视飓风TIM4 小时前
C++异常与RAII智能指针笔记
开发语言·c++·笔记
BD_Marathon4 小时前
调用DeepSeek官网的DeepSeek模型
开发语言·chrome·python
草莓熊Lotso4 小时前
【Redis 初阶】C++ 客户端实战:从 RESP 协议到 redis-plus-plus 工程化用法
linux·开发语言·网络·数据库·c++·redis·缓存
郝学胜-神的一滴4 小时前
C++11 工程级应用 10:减少拷贝,让容器跑得更快
服务器·开发语言·c++·游戏引擎·opengl
玖玥拾4 小时前
Lua 基础语法(八) Unity Huatuo (HybridCLR)
开发语言·unity·游戏引擎·lua
Beyond_System|系统之外4 小时前
【学编程】Python基础编程题100道(1-20)
java·数据结构·算法
维克兜率天4 小时前
【维克】一个极端值,毁掉了整个因子
大数据·人工智能·python·算法·机器学习
Wang's Blog4 小时前
Java框架快速入门: Spring Security+OAuth2之环境配置与多环境部署
java·开发语言·spring