解決策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ステップの二段階の高速ポインタバイステップ、およびので、彼らが同時にある、高速なポインタ戻って最初に、ステップバイステップで、そのため彼らは、同じ時間ですが、重複した数字ということです