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

链表中倒数最后k个结点

http://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */
//先遍历整个链表得到长度length,然后通过传进来的k值,在通过:n=length-k+1,来指定倒数的位置(n为要从头走的步数)。
//设置两个节点p和q,p先遍历整个表,得到链表长度,在通过 length-k+1得到q要往后走的步数,最后q停下的位置就是倒数第k个节点。  public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead ListNode类 
     * @param k int整型 
     * @return ListNode类
     */
    public ListNode FindKthToTail (ListNode pHead, int k) {
        int length = 0;
        ListNode p = pHead,q = pHead;
        if(pHead==null){
            return null;
        }
        while(p!=null){
            length++;
            p = p.next;
        }
        if(k>length){
            return null;
        }
        int n = length-k+1;
        while(n!=1){//此处要不等于1,如果等于零,会多向后走一步
            n--;
            q=q.next;
        }
        return q;
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务