剑指Offer——链表中倒数第k个结点

链表中倒数第k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9?tpId=13&tqId=11167&rp=1&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking&tab=answerKey

题目描述

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

示例
输入
{1,2,3,4,5},1
返回值
{5}

题解

遍历两遍:计算链表长度+定位。
遍历+栈:进栈+出栈k个。
双指针:一先一后,先者先走k步。
import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    public ListNode FindKthToTail (ListNode pHead, int k) {
        // 边界
        if(k<1||pHead==null){
            return null;
        }

    // 先者先走k步,并判断边界
        ListNode first=pHead;
        ListNode second=pHead;
        while(k>0&&first!=null){
            --k;
            first=first.next;
        }
    // 链表长度不够
        if(k>0){
            return null;
        }
        // 两个指针一起走,先者到达终点,后者即为目标
        while(first!=null){
            first=first.next;
            second=second.next;
        }
        return second;
    }
}
全部评论

相关推荐

内向的柠檬精在研究求职打法:你们广东工业大学为啥这么多字节,好吓人,还有那个东北大学,重庆邮电,太哈人了
点赞 评论 收藏
分享
野猪不是猪🐗:现在的环境就是这样,供远大于求。 以前卡学历,现在最高学历不够卡了,还要卡第一学历。 还是不够筛,于是还要求得有实习、不能有gap等等... 可能这个岗位总共就一个hc,筛到最后还是有十几个人满足这些要求。他们都非常优秀,各方面都很棒。 那没办法了,看那个顺眼选哪个呗。 很残酷,也很现实
点赞 评论 收藏
分享
雪飒:我也遇见过,我反问他有考虑来华为od吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务