求出链表中倒数第n个节点

来源:互联网 发布:炒外汇模拟软件 编辑:程序博客网 时间:2024/05/29 19:39

问题描述: 求出链表中倒数第n个节点。例如:1,2,3,4,5,倒数第2个是4

解法与分析: 用两个指针的方法。 
1. 第一个指针起始位置在0位置,第二个指针起始位置在n-1位置。 
2. 两个指针同时移动,每次移动1个结点。 
3. 当第二个指针移动到最后一个节点时,第一个指针所指结点就是倒数第n个结点。


static class ListNode{    int val;    ListNode next;    public ListNode(int val)    {        this.val = val;    }    public ListNode(int val, ListNode next)    {        this.val = val;        this.next = next;    }    @Override    public String toString()    {        return "ListNode [val=" + val + "]";    }}public static ListNode getLastNode(ListNode head, int n){    if (head == null || n <= 0)    {        return null;    }    ListNode left = head;    ListNode right = head;    for (int i = 1; i < n; i++)    {        right = right.next;        if (right == null)        {            return null;        }    }    while (right.next != null)    {        left = left.next;        right = right.next;    }    return left;}


0 0
原创粉丝点击