博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer]链表中倒数第k个结点
阅读量:6039 次
发布时间:2019-06-20

本文共 1356 字,大约阅读时间需要 4 分钟。

题目

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

/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/import java.util.ArrayList;import java.util.List;public class Solution {
public ListNode FindKthToTail(ListNode head,int k) { }}

解题思路

我的思路

遍历一遍链表,把每个数据存List,然后在从List中取出,当然存栈也是一种思想。

我的代码
/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/import java.util.ArrayList;import java.util.List;public class Solution {    public ListNode FindKthToTail(ListNode head,int k) {        if(head==null)            return null;         List
list = new ArrayList
(); while(head!=null){ list.add(head); head = head.next; } if(k>list.size()||k<=0) return null; return list.get(list.size()-k); }}

看到他人代码,有更好的思路。

思路

两个指针,先让第一个指针和第二个指针都指向头结点,然后再让第一个指正走(k-1)步,到达第k个节点。然后两个指针同时往后移动,当第一个结点到达末尾的时候,第二个结点所在位置就是倒数第k个节点了。

代码
/*public class ListNode {    int val;    ListNode next = null;    ListNode(int val) {        this.val = val;    }}*/public class Solution {    public ListNode FindKthToTail(ListNode head,int k) {        if(head==null||k<=0){            return null;        }        ListNode pre=head;        ListNode last=head;               for(int i=1;i

转载地址:http://dlghx.baihongyu.com/

你可能感兴趣的文章
AD集成库元件简写中英文对照表
查看>>
C#Ftp的下载实例
查看>>
HDU4335 What is N? [数论(欧拉函数)]
查看>>
会声会影字幕制作
查看>>
电商网站中添加商品到购物车功能模块2017.12.8
查看>>
由支付宝当面付引发的NatApp方便调试回调
查看>>
享受LINQ:判断一组文字是否在字符串中同时出现的最简单方法
查看>>
UVA1437 String painter
查看>>
poj 1671 Rhyme Schemes
查看>>
HDU 2639 Bone Collector II DP
查看>>
uni-app 通过本地经纬度获取详细地理位置
查看>>
扩展欧几里得学习小记
查看>>
Linux useradd 添加用户
查看>>
poj3427
查看>>
android 模拟器 hardWare 属性说明
查看>>
GM11灰色模型
查看>>
六款值得推荐的android(安卓)开源框架简介
查看>>
max_element( )
查看>>
CSS Grid 布局
查看>>
接口的幂等性
查看>>