剑指Offer:链表中倒数第k个结点【22】
剑指Offer:链表中倒数第k个结点【22】
题目描述
输入一个链表,输出该链表中倒数第k个结点。
解题思考
我们定义两个指针L和R,R事先移动K-1个位置,然后两者同时往后移动直到遇到R的下个节点为空,此时L节点的位置就是倒数第K个节点。

Java题解
package linklist;
public class FindKthToFail {
public static ListNode FindKthToTail(ListNode head,int k) {
if(head==null||k==0)
return null;
ListNode ptr = head;
for(int i=1;i<k;i++) {
if(head.next==null)
return null;
head = head.next;
}
while (head.next!=null)
{
ptr=ptr.next;
head=head.next;
}
return ptr;
}
public static void main(String[] args) {
ListNode n1 = new ListNode(1);
ListNode n2 = new ListNode(2);
ListNode n3 = new ListNode(3);
ListNode n4 = new ListNode(4);
ListNode n5 = new ListNode(5);
n1.next=n2;
n2.next=n3;
n3.next=n4;
n4.next=n5;
System.out.println(FindKthToTail(n1,2).val);
}
}
剑指Offer:链表中倒数第k个结点【22】的更多相关文章
- 剑指Offer 链表中倒数第k个结点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路: 法1:设置2个指针p,q.p先移动k次,然后pq同时后移,p到链表尾尾的时候,q指向倒数第k个节点. 注意://需要考虑k=0,以 ...
- 剑指offer——链表中倒数第k个结点
输入一个链表,输出该链表中倒数第k个结点. class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned ...
- 用js刷剑指offer(链表中倒数第k个结点)
题目描述 输入一个链表,输出该链表中倒数第k个结点. 牛客网链接 思路 设置两个指针,p,q,先让p走k-1步,然后再一起走,直到p为最后一个 时,q即为倒数第k个节点 js代码 // 空间复杂度1 ...
- 剑指Offer——链表中倒数第k个节点
Question 输入一个链表,输出该链表中倒数第k个结点. Solution 一种想法就是扫描两边,第一遍求出总的节点个数,第二遍从头开始走n-k个 第二种思想类似于fast-slow指针的方法,f ...
- 剑指offer--21.链表中倒数第k个结点
定义两个指针,当一个指针指到第K个结点时,第二个指针开始向后移动 -------------- 时间限制:1秒 空间限制:32768K 热度指数:602826 本题知识点: 链表 题目描述 输入一个链 ...
- 剑指Offer-14.链表中倒数第k个结点(C++/Java)
题目: 输入一个链表,输出该链表中倒数第k个结点. 分析: 第一个解法,我们可以先遍历一遍链表,计算下节点的总数n,然后再从头结点查n-k个节点,即是倒数第k个节点. 第二个解法,便是使用双指针,两个 ...
- 剑指offer 链表中倒数第K个节点
利用两个间隔为k的指针来实现倒数第k个 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ...
- 剑指offer15 链表中倒数第k个结点
错误代码 class Solution { public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ) retur ...
- 剑指:链表中倒数第k个节点
题目描述 输入一个链表,输出该链表中倒数第k个结点. 解法 pre 指针走 k-1 步.之后 cur 指针指向 phead,然后两个指针同时走,直至 pre 指针到达尾结点. 即cur与pre始终相距 ...
- 剑指offer-链表中倒数第 K 个结点
输入一个链表,输出该链表中倒数第k个结点. /* public class ListNode { int val; ListNode next = null; ListNode(int val) { ...
随机推荐
- (4)Unity3d镜头
Input.GetMouseButton()://获取鼠标按钮状态,0-鼠标左键,1-鼠标右键,2-鼠标中键: Input.GetAxis("Mouse X ") //鼠标水平向移 ...
- webstrom配置一键修复ESLint的报错
因为项目本身有用eslint,而我这边没用,我这边提交上去别人update后就会提示很多eslint的格式错误提示,所以就在该项目里使用了eslint. 发现一般有两种安装方式,我使用的是webstr ...
- C# MD5加密(16进制)
MD5加密(16进制) vs会提示引用 using System.Security.Cryptography; 代码如下: public static string MD5Encrypt32(stri ...
- Java过滤HTML标签工具类
过滤HTML标签能有效的放置XSS攻击. 封装: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springf ...
- php curl xml传输和转换
<?php /** * API * User: sgfoot * Date: 2017/3/20 * Time: 18:05 */ class apiCurl { private $config ...
- 一个能让你了解所有函数调用顺序的Android库
http://mobile.51cto.com/android-536059.htm 原理 本库其实并没有什么黑科技,本库也没有java代码,核心就是2个build.gradle中的task.首先,原 ...
- javascript --- 对象之间的继承
了解这一章之前,先把我们之前讲到的以构造函数创建对象为前提的继承抛到一边. 首先,我们先用一个var o = {}创建一个没有任何属性的空对象作为我们的‘画板’,然互在逐步向这个画板里添加属性,和方法 ...
- Android 沉浸式全屏
Android 4.4 带来了沉浸式全屏体验, 在沉浸式全屏模式下, 状态栏. 虚拟按键动态隐藏, 应用可 以使用完整的屏幕空间, 按照 Google 的说法, 给用户一种 “身临其境” 的体验. A ...
- 【bootstrap】bootstrap中的tooltip的使用
先看看效果图:[当光标放在下面这个时间搜索框上时,显示一段文字:搜索时间段中的流水信息] 这样的效果,怎么实现呢? 很简单 1.引入jQuery.js和bootstrap的js和css 2.给想要有t ...
- cocos2d-x step by step(1) First Blood
下了cocos2d-x 源码,开搞! 首先,笔者本身 1) 5年没有摸过c++了 2) 没用过cocos2d-x 3) 有强烈的求知欲望(这条每个简历个人介绍不都这么写么, ...