首页 > 其他 > 详细

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

时间:2015-09-20 23:42:22      阅读:284      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!