链表中倒数第k个节点

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9?tpId=295&tqId=1377477&ru=/exam/company&qru=/ta/format-top101/question-ranking&sourceUrl=%2Fexam%2Fcompany

> 链表中倒数第k个节点

图解

链接

思路:

1.先设置两个指针,一个快指针fast和一个慢指针slow,都赋值为表头的地址

2.先让fast进行移动n位,注意这里需要进行特判一下,是否链表的长度小于n,如果是,那么就返回0

3.否则让fast和slow指针同步进行移动,直到fast为nul时,此时slow就是倒数第n个节点

代码:

import java.util.*;

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

public class Solution {
    public ListNode FindKthToTail (ListNode pHead, int k) {
        //定义两个指针:快指针fast和慢指针slow,都先指向表头
           ListNode fast=pHead;
           ListNode slow=pHead;
        //先将fast指针移动k个节点,判断一下如果fast=null,那么表示该表的的长度不足k,就返回0
           for(int i=1;i<=k;i++){
            if(fast==null){
                return slow=null;
            }else{
                fast=fast.next;
            }
           } 
           //接下来就让fast和slow指针同步移动,当fast移动到null的时候就结束
           //此时返回的slow节点就是倒数第k个节点
           while(fast!=null){
                fast=fast.next;
                slow=slow.next;
            }
            return slow;
    }
}
全部评论

相关推荐

06-26 18:30
门头沟学院 Java
据说名字越长别人越关...:你问问这里面有多少是正经候选人,而不是乱打招呼的
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务