第一題??鏈表中倒數(shù)第 K 個結(jié)點
解題思路:
設(shè)鏈表的長度為 N。設(shè)兩個指針 P1 和 P2,先讓 P1 移動 K 個節(jié)點,則還有 N - K 個節(jié)點可以移動。此時讓 P1 和 P2 同時移動描验,可以知道當 P1 移動到鏈表結(jié)尾時,P2 移動到 N - K 個節(jié)點處坑鱼,該位置就是倒數(shù)第 K 個節(jié)點膘流。
設(shè)鏈表的長度為 N絮缅。設(shè)兩個指針 P1 和 P2,先讓 P1 移動 K 個節(jié)點呼股,則還有 N - K 個節(jié)點可以移動耕魄。此時讓 P1 和 P2 同時移動,可以知道當 P1 移動到鏈表結(jié)尾時彭谁,P2 移動到 N - K 個節(jié)點處吸奴,該位置就是倒數(shù)第 K 個節(jié)點。
第二題??鏈表中環(huán)的入口結(jié)點
使用雙指針缠局,一個指針 fast 每次移動兩個節(jié)點则奥,一個指針 slow 每次移動一個節(jié)點,假設(shè)到環(huán)入口距離x狭园,當相遇時fast移動x+m*n,m是圈數(shù)读处,n是環(huán)長度,slow移動x+k唱矛,k是環(huán)內(nèi)移動數(shù)罚舱。又因為fast=2*slow,那么x+k=m*n.代表x+k等于在環(huán)內(nèi)走m圈揖赴,于是讓fast指向頭結(jié)點移動馆匿,當再次相遇就是環(huán)入口