码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer | 链表中倒数第k个结点

时间:2015-09-20 23:44:20      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

先做做一些简单题找找手感,还有赞一个牛客的OJ,这样的提交方式很好,ACM那种对输入出处格式对于没有接触过ACM的人来说比较头疼,华为OJ那种格式描述不清楚的就更头疼了,卡在输入输出上就悲剧了,当然,输入输出也是需要了解的。

顺便吐槽一下华为SO挑战赛:题意有模糊的地方,挑战赛的题目没有区分度,作弊监管太松,判分规则未公开说明。

 

题目描述:输入一个链表,输出该链表中倒数第k个结点。

题目解析:设两个同步后移、相距k的指针就行,前面的指针触底,后面的指针即是倒数k个节点。

代码如下:

 1 /*
 2 struct ListNode {
 3     int val;
 4     struct ListNode *next;
 5     ListNode(int x) :
 6             val(x), next(NULL) {
 7     }
 8 };*/
 9 class Solution {
10 public:
11     ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
12         if(k == 0 || pListHead == NULL) return NULL;
13         ListNode* pFrontNode = pListHead;
14         ListNode* pBehindNode = pListHead;
15         while(--k) {
16             if(pFrontNode->next) pFrontNode = pFrontNode->next;
17             else return NULL;
18         }
19         while(pFrontNode->next) {
20             pFrontNode = pFrontNode->next;
21             pBehindNode = pBehindNode->next;
22         }
23         return pBehindNode;
24     }
25 };

剑指offer | 链表中倒数第k个结点

标签:

原文地址:http://www.cnblogs.com/excavator/p/4824543.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!