剑指offer--链表倒数第K个节点

来源:互联网 发布:unity3d c 工具类脚本 编辑:程序博客网 时间:2024/06/05 16:39

题目:

输入一个链表,输出该链表中倒数第k个结点。

解析:

最原始的想法就是先遍历一遍得到这个链表的长度,然后第二次遍历得到第K个节点的.第二种方法的思想很巧妙可以只遍历一次就可以.设置两个指针,先让尾指针向后移动k-1个单位,然后两个指针同时移动,直到尾指针到链表的最后一个节点,那么头指针就指向的是第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||k<=0)            return null;        ListNode first = head;        ListNode last = head;        for(int i = 0 ; i < k-1 ;i++){            if(last.next!=null){            last = last.next;            }else{                return null;            }        }        while(last.next != null){            first = first.next;            last = last.next;        }        return first;}}
0 0
原创粉丝点击