Day14 剑指offer:输出倒数第k个结点

2017-08-10  本文已影响0人  zheng7

输入一个链表,输出该链表中倒数第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 null;
        if(k <= 0) return null;
        
        ListNode node = head;   
        for(int i = 0; i < k-1; i++){
            if(node.next == null) return null;
            node = node.next;
        }
        ListNode res = head;
        while(node.next != null){
            res = res.next;
            node = node.next;
        }
        return res;
    }
}

例如:求倒数第三个节点
当node为倒数第一个即node.next == null时,res在node之前两个。所以,node先向后移两下,此时head在node之前两个,node和head(res)一起移动,当node称为倒数第一个节点时,head就是倒数第三个节点。

上一篇 下一篇

猜你喜欢

热点阅读