剑指offer-面试题22-链表中倒数第k个节点-双指针
2024-09-05 13:56:55
/*
题目:
链表中倒数第k个节点
*/
/*
思路:
考虑边界条件:链表为空,k值超过链表长度。
双指针:
q指针指向第k个节点,p指针指向第1个节点。
q指针指向最后一个节点,p指针指向倒数第k个节点。
*/
#include<iostream>
#include<string.h>
#include<algorithm>
#include<cmath>
#include<stdio.h>
using namespace std; struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
}; ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
if(pListHead == nullptr || k == 0) return nullptr; ListNode* kNode = pListHead;
ListNode* pNode = pListHead;
for(int i = 1; pNode != nullptr && i < k; i++){
pNode = pNode->next;
}
if(pNode == nullptr) return nullptr;
while(pNode->next != nullptr){
kNode = kNode->next;
pNode = pNode->next;
}
return kNode; } int main(){
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(2);
ListNode* node3 = new ListNode(3);
node1->next = node2;
node2->next = node3;
node3->next = nullptr;
cout<<FindKthToTail(node1,4)->val<<endl;
}
最新文章
- 使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞
- PJAX初体验(主要是利用HTML5 新增API pushState和replaceState+AJAX)
- SQL SERVER几种数据迁移/导出导入的实践
- SQL语句处理一些修改、新增、删除、修改属性操作(MySql)
- Lua与C++互相调用(上)
- ACM/ICPC 之 BFS+状态压缩(POJ1324(ZOJ1361))
- golang time and duration
- JS中的call()和apply()方法和bind()
- (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
- hihocoder 1038 01背包
- Kafka系列(二)特性和常用命令
- 【Bootstrap3.0建站笔记一】表单元素排版
- like-minded 都有什么意思_百度知道
- GOF23种设计模式精解
- javascript:面向对象和常见内置对象及操作
- Nginx+Redis+Ehcache大型高并发高可用三层架构总结
- cat查阅文件技巧
- Vue框架H5商城类项目商品详情点击返回弹出推荐商品弹窗的实现方案
- gitlab与pycharm结合
- vscode 右击文件||文件夹添加快捷方式
热门文章
- Codeforces 1062B Math(质因数分解)
- Why all application lack a kind of most really charm ?
- java架构之路-(netty专题)netty的编解码(出入战)与粘包拆包
- vue 插槽 ------ slot 简单理解
- MSSqlServer访问远程数据库
- Java开发最佳实践(二) ——《Java开发手册》之";异常处理、MySQL 数据库";
- webapi使用jwt做权限验证
- 【全集】大数据Java基础
- android button的selector
- Executor 任务执行器