我需要最快的方法来找到数组A中的值,当它除以4时,它们的mod是数组B:
A = {4,5,6,7,8,9,10}
B={2,3}
result={6,7,10}
Run Code Online (Sandbox Code Playgroud)
矿:
foreach (int b in B)
{
S= A.Where(n => n % 4 == b).ToArray();
foreach (int s in S)
{
newlist.Add(s);
}
}
newlist.Distinct().ToArray();
Run Code Online (Sandbox Code Playgroud)
为什么不:
var query = A.Where(a => B.Contains(a % 4))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
如果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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |