题解 | #链表中倒数最后k个结点#TOP8

思路: 利用快节点,先从头节点 偏移 k 个位置,fast指向了第 k+1 个节点,slow指向了头节点。 如果第k+1个节点是空的,那么就返回头节点 否则,不断遍历循环,知道 fast指向空节点,slow就指向了倒数k个位置,因为slow -> fast 中间有k - 1 个节点


/*
 * 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) {
        // write code here
        if(pHead == null){
            return null;
        }

        if(k == 0){
            return null;
        }

        ListNode fast = pHead;
        while(k > 0){
            k --;
            fast = fast.next;
            if(k == 0 && fast  == null){
                return pHead;
            }
            if(fast == null){
                return null;
            }
        }
        ListNode slow = pHead;
        while(fast != null){
            slow = slow.next;
            fast = fast.next;
        }
        
        return slow;
    }
}
面试必刷TOP101 文章被收录于专栏

面试必刷TOP101

全部评论

相关推荐

半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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