这题就一个思路问题,想到了就容易,想不到就感觉很难,容易从超高时间复杂的角度来考虑问题。
思路:倒数第K个节点,其实也就是正数第Length-k+1个节点。
因此,两个指针就完事了,一个先不动,另一个指针先跑k-1步(注意:此时,第一个指针跑了k-1,其实此时这个指针距离第二个指针为k),然后,两个指针同时往后跑就行了,他们的距离为k,直到前面的指针跑到末尾,另一个指针指向的就是倒数第K个节点。
代码:
public static int getDaoShuK(int k,LinkNode pre,LinkNode behind) {
for(int i=0;i<k-1;i++) {
pre=pre.next;
}
while(pre.next!=null) {
pre=pre.next;
behind=behind.next;
}
return behind.value;
}```