剑指offer15 链表中倒数第k个结点
2024-10-21 11:58:12
错误代码
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k == )
return NULL;
ListNode* p1 = pListHead;
ListNode* p2 = pListHead;
for(int i = ;i < k;i++){
p1 = p1->next;
}
while(p1->next != NULL){
p1 = p1->next;
p2 = p2->next;
}
return p2;
}
};
会报“段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起”
因为k的数字可能大于整个链表的长度,这时p1可能指向空指针,空指针的next就会报错
如果去计算一遍整个链表的长度,再判断k与链表长度的大小,这样还是会和笨办法一样遍历两次链表,直接在for循环里添加判断条件只遍历一次链表
正确代码
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == NULL || k == )
return NULL;
ListNode* p1 = pListHead;
ListNode* p2 = pListHead;
for(int i = ;i < k;i++){
p1 = p1->next;
if(p1 == NULL){
return NULL;
}
}
while(p1->next != NULL){
p1 = p1->next;
p2 = p2->next;
}
return p2;
}
};
最新文章
- C#设计模式(1)——单例模式
- Json to JObject转换的使用方法
- 微信分享ios设备没有分享图标安卓有分享图标 (分享功能没有问题)
- c# windows编程控件学习-1
- StartUML 破解
- test在博客中嵌入实例代码
- Android-IA Power Manager (S3)
- (转载)Log4Net 在多层项目中的使用小记
- AutoMapper总结
- 【ASP.NET MVC 学习笔记】- 03 Razor语法
- C++中不同变量、函数在内存中的内存情况《转》
- Netty 4源码解析:服务端启动
- Linux Vim配置
- RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密
- 杨力第一次jjave作业
- HTML5 — 地理定位
- Java对象序列化全面总结
- BZOJ4001[TJOI2015]概率论——卡特兰数
- MySQL5.6数据库8小时内无请求自动断开连接
- springboot获得应用上下文