求链表倒数第K个结点

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

解题思路:第一次遍历链表,保存链表的长度;第二次遍历链表,定位到倒数第K个结点;分别讨论特殊情况。

/*
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 head;
        }
        int count = 0;
        ListNode node = head;
        while(node != null){
            count++;//保存链表长度
            node = node.next;
        }
        if(count < k){//特殊情况,要求的结点不在链表里
            return null;
        }
        ListNode cur = head;
        for(int i = 0; i < count - k; i++){//遍历找到倒数第K个结点
            cur = cur.next;
        }
        return cur;
    }
}

猜你喜欢

转载自blog.csdn.net/ly52014/article/details/89550509