zoukankan      html  css  js  c++  java
  • day16(链表中倒数第k个结点)

    题目描述

    输入一个链表,输出该链表中倒数第k个结点。
     
    提交链接:点击
     
    思路:首先遍历一遍链表,利用i储存该链表一共有多少个节点。接着求该链表的倒数第k个节点就是i-k的位置,让pListHead指针往后移到该i-k位置,最后返回pListHead指针就可。时间复杂度为O(n).
     
    代码:
    /*
    struct ListNode {
        int val;
        struct ListNode *next;
        ListNode(int x) :val(x), next(NULL) {
        }
    };*/
    class Solution {
    public:
        
        ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
            ListNode* p=pListHead;
            int i=0;  //统计有多少个节点,那么倒数第K个节点就是i-k
            while(p!=NULL){
                p=p->next;
                i++;
            }
            if(i<k) return NULL; //如果k比i大,那么返回NULL
            for(int j=1;j<=i-k;j++){
               pListHead=pListHead->next;
            }
            return pListHead;
        }
    };

    非学无以广才,非志无以成学! 【Magic_chao

  • 相关阅读:
    论语言思维的差异
    lua经典问题
    跳槽的故事
    未来一年计划
    腾讯面试题 找重复的数
    nodejs学习
    node记录
    mysql 常用总结
    ubuntu 服务器搭建汇总
    ubuntu下安装golang
  • 原文地址:https://www.cnblogs.com/logo-88/p/9699569.html
Copyright © 2011-2022 走看看