你如何在数组A中找到它们的mod是数组B的值
本文关键字:数组 mod 的值 | 更新日期: 2023-09-27 18:22:20
我需要最快的方法来找到数组A中的值,当它们的mod除以4:时是数组B
A = {4,5,6,7,8,9,10}
B={2,3}
result={6,7,10}
矿山:
foreach (int b in B)
{
S= A.Where(n => n % 4 == b).ToArray();
foreach (int s in S)
{
newlist.Add(s);
}
}
newlist.Distinct().ToArray();
为什么不:
var query = A.Where(a => B.Contains(a % 4))
.ToArray();
如果B
可能很大,你可以创建一个HashSet<int>
,但如果真的是mod 4,那就没有意义了。
或者,假设您知道A
和B
中的每个元素都是正的(并且B
没有任何愚蠢的值,如5),则可以将B
映射到bool[4]
,并使用& 3
而不是% 4
:
var truth = new bool[4];
foreach (var b in B)
{
truth[b] = true;
}
var query = A.Where(a => truth[a & 3]).ToArray();
一点代码回顾:
foreach (int b in B)
{
S= A.Where(n => n % 4 == b).ToArray();
foreach (int s in S)
{
newlist.Add(s);
}
}
newlist.Distinct().ToArray();
您不需要Where(…).ToArray()中的ToArray()。
foreach循环可以替换为AddRange()
foreach (int b in B)
{
var S = A.Where(n => n % 4 == b);
newlist.AddRange(S);
}
var result = newlist.Distinct().ToList();
尽量少用数组。CCD_ 10和CCD_。