描述

输入一个链表,输出该链表中倒数第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 (null == head) {
            return head;
        }
        ListNode pre = head;
        int nodeCount = 0;//计数节点数量
        int originK = k;//记录原始K,用于最后与节点数比较
        while (head != null) {
            head = head.next;
            nodeCount++;
            
            k--;
            if (k < 0) {
          //这里不能k <= 0,因为head最后是null。如果 k == 0,那么 pre 也会是 null pre
= pre.next; } } return nodeCount >= originK ? pre : null; } }