[ポインタの速度] leetcode 286は、重複した番号を探します

問題:

        リングがあるかどうかを検索します。ポインタ2つのステップ早歩き、ポインタ一歩遅く、それはリング会う中に存在しています。低速ループの長さがsで、すばやく離れるポインタ2S、離れポインタSから配置されています。リングの開始位置は、それが戻って行くことができる開始位置Dの散歩をステップとして、D、どこ開始位置で少し遅い上にポインタの位置、である場合。

クラス解決{
 パブリックINT findDuplicate(ベクトル< INT >&NUMS){
     int型遅い= 0 int型遠い= 0 ;
    INT、N = nums.size()。
// S、2S 2S = S + LのD + T = Sで
 // 歩行T、プラス完全な円を取得dは
    ながら){ 
        遅い =のNUMS [遅く]。
        ファー = NUMS [NUMS [遠]。
        もし(遅い==ここまで)休憩
    } 
    int型のヘッド= 0 一方、(!ヘッド= 遅い){ 
        ヘッド = NUMS [ヘッド]。
        遅い =のNUMS [遅いです]。
    } 
    戻りヘッド。
    } 
}。

 

おすすめ

転載: www.cnblogs.com/fish1996/p/11333750.html