题解 | #链表中倒数第k个结点#

链表中倒数第k个结点

https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a

import java.util.*;
/*
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) {
            return null;
        }
        // 利用两个临时节点解决问题
        ListNode fastlistNode = head;
        ListNode slowlistNode = head;
        // 判断 k<=0 的不合法情况
        if (k <= 0) {
            return null;
        }
        // 先让fast走 k-1 步
        for (int i = 0; i < k - 1; i++) {
            fastlistNode = fastlistNode.next;
            // 判断 k>size 的不合法情况
            if (fastlistNode == null) {
                return null;
            }
        }
        // fast和slow 同时遍历数组,当 fast.next==null 的时候,返回slow
        while (fastlistNode.next != null) {
            fastlistNode = fastlistNode.next;
            slowlistNode = slowlistNode.next;
        }
        return slowlistNode;
    }
}

全部评论

相关推荐

专心打鱼:互联网搬运工,贴子都要偷
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务