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

链表中倒数最后k个结点

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

区间(长度为n)一起走直到遇到尾巴,则这个区间就是我们所需要的。

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {

    public ListNode FindKthToTail (ListNode pHead, int k) {
        if (pHead == null) {
            return null;
        }
        if (k == 0) {
            return null;
        }
        ListNode head = pHead;
        ListNode tail = pHead;
        int n = k;
        while(--n > 0) {
           if (tail.next == null) {
               return null;
           } 
           tail = tail.next;
        }
        while(tail.next != null) {
           tail = tail.next;
           head = head.next;
        }
        ListNode newHead = new ListNode(head.val);
        ListNode newTail = newHead;
        while(head.next != null) {
            head = head.next;
            newTail.next = new ListNode(head.val);
            newTail = newTail.next;
        }
        return newHead;
    }
}
全部评论

相关推荐

牛客101244697号:这个衣服和发型不去投偶像练习生?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务