下面的函数试图寻找nth到最后一个单向链表的元素.
例如:
如果元素是8->10->5->7->2->1->5->4->10->10结果是
7th最后一个节点是7.
任何人都可以帮助我解释这段代码是如何工作的,还是有更好更简单的方法?
LinkedListNode nthToLast(LinkedListNode head, int n) {
if (head == null || n < 1) {
return null;
}
LinkedListNode p1 = head;
LinkedListNode p2 = head;
for (int j = 0; j < n - 1; ++j) { // skip n-1 steps ahead
if (p2 == null) {
return null; // not found since list size < n
}
p2 = p2.next;
}
while (p2.next != …Run Code Online (Sandbox Code Playgroud)