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】
posted on 2018-09-25 15:09 Magic_chao 阅读(171) 评论(0) 编辑 收藏 举报