错误代码

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;
}
};

最新文章

  1. C#设计模式(1)——单例模式
  2. Json to JObject转换的使用方法
  3. 微信分享ios设备没有分享图标安卓有分享图标 (分享功能没有问题)
  4. c# windows编程控件学习-1
  5. StartUML 破解
  6. test在博客中嵌入实例代码
  7. Android-IA Power Manager (S3)
  8. (转载)Log4Net 在多层项目中的使用小记
  9. AutoMapper总结
  10. 【ASP.NET MVC 学习笔记】- 03 Razor语法
  11. C++中不同变量、函数在内存中的内存情况《转》
  12. Netty 4源码解析:服务端启动
  13. Linux Vim配置
  14. RSA加解密工具类RSAUtils.java,实现公钥加密私钥解密和私钥解密公钥解密
  15. 杨力第一次jjave作业
  16. HTML5 — 地理定位
  17. Java对象序列化全面总结
  18. BZOJ4001[TJOI2015]概率论——卡特兰数
  19. MySQL5.6数据库8小时内无请求自动断开连接
  20. springboot获得应用上下文

热门文章

  1. Golang : pflag 包简介
  2. 洛谷P2289 [HNOI2004]邮递员(插头dp)
  3. java利用URL发送get和post请求
  4. js框架:vue
  5. Python小世界:匿名函数、高阶函数、推导式
  6. iOS文字转语音(语音朗读)
  7. [LOJ 2039] 「SHOI2015」激光发生器
  8. namedJDBC查询
  9. mybatis pageHelper 分页插件使用
  10. 【手撸一个ORM】第三步、SQL语句构造器和SqlParameter封装