重複した数字の配列を探します

 

 解決策1:

 

 方法2:ポインターの速度、リング

公共INT findDuplicate(INT [] NUMS){ 
        int型遅い=のNUMS [0]。
        INT高速=のNUMS [NUMS [0]]。
        ながら(!は遅く=速い)
        { 
            遅い=のNUMS [遅いです]。
            高速=のNUMS [NUMS [速いです]。
        } 

        高速= 0。
        (!速い=遅い)、一方
        { 
            高速= NUMS [速いです]。
            遅い=のNUMS [遅いです]。
        } 
        スローリターン。
    }

    {3,1,2,0,2,5,3}

インデックス{0,1,2,3,4,5,6}

3 - > 0-> 3 - > 0:これはリングであります

{1,4,6,6,6,2,3}

1-> 4-> 6> 3> 6

リング:スローポインタ、ステップ、2ステップの二段階の高速ポインタバイステップ、およびので、彼らが同時にある、高速なポインタ戻って最初に、ステップバイステップで、そのため彼らは、同じ時間ですが、重複した数字ということです

おすすめ

転載: www.cnblogs.com/da-peng/p/11490421.html
おすすめ