1.求链表中的倒数第K个节点
注意事项:1、要是K大于链表长度怎么办?
2、k<=0怎么办?
ListNode* FindR_Kth(ListNode* p_head, unsigned int k)
2 {//找到链表的倒数第K个节点
3 //if (k==0)特殊处理
4 //k小于链表长度,特殊处理
5 if (p_head = nullptr)
6 return nullptr;
7 ListNode* first = p_head;
8 ListNode* second = p_head;
9 for (int i = 0; i < k - 1; i++)
10 {
11 first = first->next;
12 }
13 while (first->next != nullptr)
14 {
15 first = first->next;
16 second = second->next;
17 }
18 return second;
19 }
最终的完善:
struct ListNode{
2 int value;
3 ListNode* next;
4 };
5 ListNode* findKthToTail(ListNode *phead,unsigned int k)
6 {
7 if (k == 0)/
8 return nullptr;
9 if (phead == nullptr)
10 return nullptr;
11 ListNode *p1 = phead;
12 ListNode *p2 = phead;
13 for (int i = 1; i < k; ++i)
14 {
15 if (p1->next == nullptr){//若k比本身链表的最大长度还大则直接返回nullptr
16 return nullptr;
17 }
18 p1 = p1->next;
19 }
20 while (p1->next != nullptr)
21 {
22 p1 = p1->next;
23 p2 = p2 ->next;
24 }
25 return p2;
26 }
1.求链表中的倒数第K个节点的更多相关文章
- 在单链表和双链表中删除倒数第K个节点
[说明]: 本文是左程云老师所著的<程序员面试代码指南>第二章中“在单链表和双链表中删除倒数第K个节点”这一题目的C++复现. 本文只包含问题描述.C++代码的实现以及简单的思路,不包含解 ...
- 《程序员代码面试指南》第二章 链表问题 在单链表和双链表中删除倒数第K个节点
题目 在单链表和双链表中删除倒数第K个节点 java代码 /** * @Description:在单链表和双链表中删除倒数第K个节点 * @Author: lizhouwei * @CreateDat ...
- 算法总结之 在单链表和双链表中删除倒数第k个节点
分别实现两个函数,一个可以删除单链表中倒数第k个节点,另一个可以删除双链表中倒数第k个节点 思路: 如果链表为空,或者k<1 参数无效 除此之外 让链表从头开始走到尾,每移动一步,就让k的值减1 ...
- 链表中删除倒数第K个节点
问题描述 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 问题分析与解决 从问题当中,我们只能得到一个链表和要删除的第K个节点的信息,于是就有以下思路:如 ...
- 《剑指offer》面试题15 链表中的倒数第k个节点 Java版
书中方法:用两个节点一次遍历求得倒数第k个节点.注意头节点为空,k<=0,k大于节点个数的情况. public ListNode find(ListNode head, int k){ if(h ...
- 链表问题----删除倒数第K个节点
在单链表和双链表中删除倒数第K个节点 分别实现两个函数,一个可以删除单链表中的倒数第K个节点,一个可以删除双链表中的倒数第k 个节点,要求时间复杂度是 O(N),空间复杂度是 O(1). [解析] 基 ...
- 在单链表和双链表中删除倒数第k个结点
题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...
- [算法]在单链表和双链表中删除倒数第k个结点
题目: 分别实现两个函数,一个可以删除单链表中倒数第K个节点,另一个可以删除双链表中倒数第K个节点. 要求: 如果链表长度为N,时间复杂度达到O(N),额外空间复杂度达到O(1). 解答: 让链表从头 ...
- 链表中获取倒数第K个结点
/* * 链表中查找倒数第K个结点.cpp * * Created on: 2018年5月1日 * Author: soyo */ #include<iostream> using nam ...
随机推荐
- oracle 内存不足处理
alter日志 TNS-12535: TNS:operation timed out ns secondary err code: 12606 nt main err code: 0 nt secon ...
- keepalived + nginx 实现双机热备
# docker run -itd --name centos_m1 centos # 进入容器 # docker exec -it centos_m1 /bin/bash # 安装nginx # r ...
- CSS实现标题/段落省略效果的三剑客
white-space: nowrap;overflow:hidden;text-overflow:ellipsis; 效果如下:
- 选择排序(JAVA实现)
算法思想:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕.也就是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录 ...
- turtlebot3 ubuntu mate 实现vnc连接
tuutlebot3 ubuntu mate 实现vnc连接 摘要: 在turtlebot3 安装的nbuntu mate系统实验过. 实现内容 x11vnc 安装 x11vnc自动启动 vnc分辩率 ...
- mac环境使用ATS验证
https://blog.csdn.net/skylin19840101/article/details/53760146 参考的这篇文章,用 /usr/bin/nscurl --ats-diagno ...
- TCP 数据传输工具类
package com.ivchat.test.propertysystem.util; import java.io.BufferedReader;import java.io.ByteArrayO ...
- Java -- 基于JDK1.8的LinkedList源码分析
1,上周末我们一起分析了ArrayList的源码并进行了一些总结,因为最近在看Collection这一块的东西,下面的图也是大致的总结了Collection里面重要的接口和类,如果没有意外的话后面基本 ...
- Git 命令及git服务器
Linux 服务器上安装git yum -y install git git config --global user.name "name" git config --glo ...
- luogu P2327 [SCOI2005]扫雷
很好的一道题,仔细思索(在y^3 dalao的帮助下)可以发现答案只有0 1 2三种情况 直接枚举第一位有没有雷,就可以递推了qwq 附上y^3大佬的blogs https://blog.csdn.n ...