题解 | #链表中倒数第k个结点#
链表中倒数第k个结点
http://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9
思路1
第一遍遍历计算链表的长度,计算出倒数第k个节点的索引值idx = length-k,再从头寻找第idx个节点。public ListNode FindKthToTail (ListNode pHead, int k) { // write code here if(k <0) return null; int listLength = 0; ListNode ptr = pHead; while(ptr!=null){ ++listLength; ptr = ptr.next; } int idx = listLength-k; if(idx<0) return null; for(int i = 0;i <idx; ++i){ pHead = pHead.next; } return pHead; }
思路2
设置快指针和慢指针,快指针先走k步后,快指针和慢指针一起走,快指针到尾结点后,慢指针所在的节点即目标节点