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

A1:先从头到尾扫描链表,得到链表的总长度n,然后再扫描一次链表,输出n-k+1处的结点  ===> 测试用例超时

A2:创建两个指针,一个遍历链表到k处,若链表已指向空,则返回false

   到k处后,进入第二个循环,指针A与指针B一起向后移动,当指针A指向nullptr时返回,结果为指针B指向的结点

   因为指针A和指针B一直保持k距离

/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if ((pListHead == nullptr) || (k < 1))
{
return nullptr;
}
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead; while (k > 0)
{
if (pNodeA == nullptr)
{
return nullptr;
}
pNodeA = pNodeA->next;
k--;
}
while (pNodeA != nullptr)
{
pNodeA = pNodeA->next;
pNodeB = pNodeB->next;
}
return pNodeB;
}
};

  

//这个解法,是两个指针距离保持在k-1的,在VS下成功通过,但是在牛客编辑器中说有段错误,很奇怪

//和上一个解法差不多相同

ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {

		if ((pListHead == nullptr) || (k < 1))
{
return nullptr;
}
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead;
ListNode* pNodeA = pListHead;
ListNode* pNodeB = pListHead; while (k > 1)
{
if (pNodeA == nullptr)
{
return nullptr;
}
pNodeA = pNodeA->next;
k--;
}
while (pNodeA->next != nullptr)
{
pNodeA = pNodeA->next;
pNodeB = pNodeB->next;
}
return pNodeB;
}

  

最新文章

  1. from collections import OrderedDict
  2. VPS/云主机 如何试用远程连接登录主机服务器_
  3. The user specified as a definer (&#39;root&#39;@&#39;%&#39;) does not exist
  4. AOP实现原理
  5. Redis配置文件(redis.conf)说明
  6. nginx 相关问题
  7. ASP.NET MVC使用jQuery无刷新上传
  8. Dropbox的可用Hosts文件
  9. 黑盒测试用例设计方法&amp;理论结合实际 -&gt; 等价类划分
  10. isinstance()和__name__
  11. jQuery Mobile 是创建移动 web 应用程序的框架。
  12. react-gulp-browserify
  13. tomcat服务器设置用户名和密码
  14. 关于O(logN)的正确理解
  15. [图论]最大流问题(Maximum flow)的定义
  16. Codeforces Round #527 (Div. 3) C. Prefixes and Suffixes
  17. 简说raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘
  18. Linux下C语言的进程控制编程
  19. python中导入一个需要传参的模块
  20. &#39;style-loader&#39;, &#39;css-loader&#39;使用

热门文章

  1. 【c#】csharp_learn
  2. Leaflet加载GeoServer发布的WMTS地图服务
  3. docker部署opengauss
  4. ChatGPT检测器开发者在知乎的文章,记录一下
  5. ORACLE 失效索引重建
  6. shell之flock
  7. 【Asp.net】服务器控件&lt;asp:TextBox &gt;&lt;/TextBox&gt;如何变为多文本控件
  8. 批量检测URL中的关键词,并且将不含有关键词的URL输出到txt文件当中
  9. 前端BootStrap框架和django创建项目和app
  10. 路由器、集线器、交换机分别工作在OSI七层协议模型的哪一层