【剑指Offer】链表中倒数第k个结点
发布日期:2022-02-10 08:55:12 浏览次数:26 分类:技术文章

本文共 1319 字,大约阅读时间需要 4 分钟。

题目描述

输入一个链表,输出该链表中倒数第k个结点。

思路

想试着用一下栈,代码1是用栈的写法,代码2是用双指针的写法。

本题也考察鲁棒性,情况得考虑周全,忘了一种k可能等于0的情况。

代码1

/*struct ListNode {	int val;	struct ListNode *next;	ListNode(int x) :			val(x), next(NULL) {	}};*/class Solution {public:    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        if(pListHead == NULL || k == 0){            return NULL;        }                stack
s; ListNode* p = pListHead; while(p!=NULL){ s.push(p); p=p->next; } if(s.size() < k){ return NULL; } for(int i = 1;i < k;i++){ s.pop(); } return s.top(); }};

代码2

/*struct ListNode {	int val;	struct ListNode *next;	ListNode(int x) :			val(x), next(NULL) {	}};*/class Solution {public:    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {        if(pListHead == NULL || k == 0){            return NULL;        }                ListNode* p1 = pListHead;        ListNode* p2 = pListHead;                for(int i = 0;i < k;i++){            if(p2 == NULL){                return NULL;            }            else{                p2=p2->next;            }        }                while(p2!=NULL){            p1=p1->next;            p2=p2->next;        }                return p1;    }};

 

转载地址:https://blog.csdn.net/hanmin822/article/details/105504268 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【剑指Offer】调整数组顺序使奇数位于偶数前面
下一篇:【剑指Offer】反转链表

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月11日 04时59分30秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章