[water_rearTopNode]链表中倒数第k个结点

链表中倒数第k个结点

http://www.nowcoder.com/questionTerminal/529d3ae5a407492994ad2a246518148a

思路:

用两种方法:
1.设一个pre在p跑了k个单位后再一起移动到结尾
2.直接把整个list给反转过来,三指针,练手,这里会输出node[k]之后所有所以不能用(这种跟递归差不多,但直接递归无法处理返回ind和返回node,封装个专门回传的对象应该可以,还有就是存入栈那空间换时间)

struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
            val(x), next(NULL) {
    }
};
//2:12--2:39
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode *p = pListHead;
        while(k--){
            if(pListHead == NULL)//居然会出越界的k。。。
                return NULL;
            pListHead = pListHead->next;
        }
        while(pListHead != NULL){
            pListHead = pListHead->next;
            p = p->next;
        }
        return p;
    }
};
//2:44--3:00
//这个版本在输出的时候发现node[k]下面的所有节点也别输出了,所以他是遍历node[k]下面的节点的,逆序不能用
class Solution {
public:
    ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
        ListNode* head=NULL, *mid=pListHead, *tail=NULL;
        if(pListHead == NULL)
            return NULL;
        else
            tail=pListHead->next;
        while(mid != NULL){
            mid->next=head;
            head = mid;
            mid = tail;
            tail = tail->next;
        }
        while(head!=NULL&&--k){
            head=head->next;
        }
        return head;
    }
};
全部评论
不好意思当时头脑不是很清晰。 我那个说的是第二种的方法原理就像递归实现后序遍历,但题目是要返回倒数k的节点,递归函数的返回类型是node,这样一来在到达底端最后一个node在回来的时候我怎么知道是倒数第k个呢,最直白是弄个计数器。我很讨厌用全局变量(这里是类的成员变量)因为感觉破坏了函数的封闭,所以我当时就习惯性的以为计数器只能用返回一个整形来实现,那这样又要返回节点又要返回一个用于计数的int就矛盾了除非用一个结构体吧计数器和node整合为一个对象就满足单个返回有兼有两个信息。(漏洞是忽略了全局)😂是完全可以的其实,就是我做算法的时候个人好恶太严重有时顺理成章就pass一些东西
点赞 回复 分享
发布于 2020-06-18 22:46
请问一下为什么会出现倒数第k个结点后的结点呢
点赞 回复 分享
发布于 2020-06-18 19:52

相关推荐

来,说点可能被同行“骂”的大实话。🙊当初接数字马力Offer时,朋友都说:“蚂蚁的“内包”公司?你想清楚啊!”但入职快一年后的今天,我反而对他有了不一样的看法!🔹 是偏见?还是信息差!之前没入职之前外面都在说什么岗位低人一等这类。实际上:这种情况不可至否,不能保证每个团队都是其乐融融。但我在的部门以及我了解的周边同事都还是十分好相处的~和蚂蚁师兄师姐之间也经常开一些小玩笑。总之:身份是蚂蚁公司给的,地位是自己挣的(一个傲娇女孩的自述)。🔹 待遇?玩的就是真实!试用期工资全额发!六点下班跑得快(早9晚6或者早10晚7,动态打卡),公积金顶格交。别听那些画饼的,到手的钱和下班的时间才是真的(都是牛马何必难为牛马)。🔹 能不能学到技术?来了就“后悔”!我们拥有权限直通蚂蚁知识库,技术栈多到学不完。说“学不到东西”的人,来了可能后悔——后悔来晚了(哈哈哈哈,可以不学但是不能没有)!💥 内推地址:https://app.mokahr.com/su/ueoyhg❗我的内推码:NTA6Nvs走我的内推,可以直达业务部门,面试流程更快速,进度可查!今天新放HC,之前挂过也能再战!秋招已经正式开始啦~机会就摆在这,敢不敢来试一试呢?(和我一样,做个勇敢的女孩)
下午吃泡馍:数字马力的薪资一般哇,5年经验的java/测试就给人一万出头,而且刚入职第三天就让人出差,而且是出半年
帮你内推|数字马力 校招
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务