【问题标题】:If x of y values are equivalent如果 y 值中的 x 是等价的
【发布时间】:2013-04-14 19:40:53
【问题描述】:

如果我有 5 个整数 (a,b,c,d,e),我可以检查 至少 3 个是否相等的最短方法是什么。

例如

a==1
b==1
c==2
d==3
e==4
//returns false

ex.
a==1
b==1
c==1
d==3
e==4
//returns true

【问题讨论】:

  • 最快是什么意思?您担心这里的性能吗?
  • 不,我只是不想要大量的 for 循环...更好的措辞应该是“检查是否...的最短方法是什么”
  • @nmat 编辑了它!谢谢!

标签: c# java math if-statement conditional


【解决方案1】:

这应该适用于所有情况:

bool match = array.GroupBy(n => n).Any(g => g.Count() >= 3);

【讨论】:

  • 只是挑一点……Any 不是比Max 更好吗?真的不需要检查最大的组,只需检查其中一个是否有 3 个或更多元素。
  • @JuliánUrbano 你是对的。我将编辑更改,谢谢。
  • @TheEvilPenguin 愿意解释一下吗?
  • +1。 @galuano1 - 当 Any 在第一个成功结果时停止时,Max 必须检查所有组 - 因此可能会检查更少的组。在您的 5 元素样本中,这无关紧要,但如果您有 100 多个项目/组,则可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-01
  • 2020-03-19
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多