链表中倒数第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;
    }
}
全部评论

相关推荐

Hello_WordN:咱就是说,除了生命其他都是小事,希望面试官平安,希望各位平时也多注意安全
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务