解题思路:
定义快慢指针,让快指针先走k-1步,走完以后让快慢指针同时走一步,当快fast.next为空时,说明走完了,此时slow就是我们要找的元素,非常巧妙,是谁想到的,真是太强了,我画个图吧
publicListNodeFindKthToTail(ListNodehead, intk) { if (k<=0||head==null) { returnnull; } //定义快慢指针,让快指针走2步,慢指针走k-1步,再让slow和fast同时走一步,让fast.next为空时,//表示走完了,此时的慢指针就是倒数第k个节点的数值ListNodefast=head; ListNodeslow=head; //fast走k-1步while (k-1!=0) { fast=fast.next; //当k的值大于链表的长度时,用于判断下一个fast是否为空if (fast==null) { returnnull; } k--; } while (fast.next!=null) { fast=fast.next; slow=slow.next; } returnslow; }