面试金典题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;
    }
};
相关推荐
gihigo199812 小时前
分布式发电的配电网有功-无功综合优化 MATLAB 实现
开发语言·分布式·matlab
人工干智能12 小时前
科普:python的pandas包中的DataFrame就是二维表
开发语言·python·pandas
浪客川12 小时前
【百例RUST - 006】一文理解所有权和切片
开发语言·后端·rust
得物技术12 小时前
生成式召回在得物的落地技术分享与思考
算法·性能优化·程序员
Westward-sun.12 小时前
PyQt5入门实战:从零实现一个表达式输入式计算器(附完整代码)
开发语言·qt
喂_balabala12 小时前
Kotlin-属性委托
android·开发语言·kotlin
dashizhi201512 小时前
如何禁止外来设备连接内网wifi、禁止外来电脑接入单位局域网?
开发语言·网络·php
不想写代码的星星12 小时前
类型萃取:重生之我在幼儿园修炼类型学
开发语言·c++
csbysj202012 小时前
C++ 接口(抽象类)
开发语言
W230357657313 小时前
回溯法经典实战:0/1 全排列与 N 皇后问题(递归 + 非递归双实现)
算法·回溯法·n皇后