如何在10个元素之间找到数组中的重复/重复

shi*_*iny 1 c#

我有一个像下面这样的数组: {1,5,5,4,5,6,7,8,9,10,11,12,13,14,1,16,17,5} 我想在每个10个元素中找到从一个到另一个的重复项.

我需要一个能够告诉我5在10个元素中重复3次的代码(在5s(4)之间最多只有1个元素.它应该是最后5个,因为它太远了.只有3个5个在10个元素内) .我不希望代码返回1,因为两个1之间有13个元素.

我有一个代码可以计算重复,但如何更改它,以便它可以计算重复项与10个元素?

            var dict = new Dictionary<string, int>();
            foreach (var count in combined2)
            {
                if (dict.ContainsKey(count))
                    dict[count]++;
                else
                    dict[count] = 1;
            }
            foreach (var val in dict)
            {
                MessageBox.Show(val.Key + " occurred " + val.Value + " times");
            }
Run Code Online (Sandbox Code Playgroud)

我只关心发生最多的重复.如果某个号码重复两次但另一个号码重复3次.我只想知道重复3次的数字(含10个项目).谢谢

Ama*_*dan 6

  • 将字典max默认为0
  • 将字典seen默认为0
  • count0最多开始计数N,其中N是元素数量.
  • 之后N >= 10,减少seen[array[count - 10]]
  • 增量 seen[array[count]]
  • 如果该数字高于max[array[count]],请更新它
  • 重复
  • 返回最高值的键max.

这样,seen在10个元素的窗口中始终具有准确的计数,并且在10个元素的窗口max中将具有每个元素的最大出现次数.