剑指offer题目14:链表中倒数第k个结点
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解答思路
没有什么难点,因为之前在论坛上看过别人谈论过快慢指针。
解答思路就是创建两个指针分别指向头部,先让第一个指针先走K-1步,然后两个指针一起走,当第一个指针走到尽头,第二指针就是倒数k的位置了。(为什么是k-1,因为索引从1开始算的,如倒数第1部是最后1个节点)

实现代码
/*
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* firstNode = pListHead;
ListNode* secondNode = pListHead;
if(firstNode == NULL || k <= 0) {
return NULL;
}
// 倒数第1个节点就是索引0,所以从1开始
for(int i = 1; i < k; i++) {
if(firstNode->next != NULL) {
firstNode = firstNode->next;
} else {
return NULL;
}
}
while(firstNode->next != NULL) {
firstNode = firstNode->next;
secondNode = secondNode->next;
}
return secondNode;
}
};
作者:大傻逼
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号