誰かが私にこのことがどうやって説明されますか?ここで私は理解しようとしていますコードスニペットは、次のとおりです。モジュロが配列の中で最も反復数を見つけました
// Iterate though input array, for every element
// arr[i], increment arr[arr[i]%k] by k where k is less than of equal to number of elements
// ie. k <= n
for (int i = 0; i< n; i++)
arr[(arr[i]%k)] += k;
// Find index of the maximum repeating element
int max = arr[0], result = 0;
for (int i = 1; i < n; i++)
{
if (arr[i] > max)
{
max = arr[i];
result = i;
}
}
私たちはアレイを介し拳の時間を繰り返すときに我々
- たちはモジュロkを繰り返す各要素の値をとることを実現します。
- これをインデックスとして使用します。
- インデックスで要素を取り、 をkだけ増やします。
これを実行した後、最高の要素のインデックスが、私たちが探している最も頻繁な番号です。
私は手順を理解していますが、私はそのモジュロとインデックス対値の周りのロジックを理解していません。どんな説明も大歓迎です!
アルゴリズムを動作させるには、 '0 <= a [i]
問題の説明に記載されているアルゴリズムのソースがあるとよいでしょう。 –