我有两个数组:
int[] oddArr = { 11, 9, ... };
int[] evenArr = {4, 2, 8, ... };
我想检查 oddArr 中的每件商品是否大于 evenArr 中的每件商品,然后我们应该做一些逻辑。
像:
if(11 > 4 && 11 > 2 && 11 > 8 && 9 > 4 && 9 > 2 && 9 > 8 && ...)
我试过这样的事情:
for (int i = 0; i < oddArr.Length; i++)
{
for (int j = 0; j < evenArr.Length; j++)
{
if (oddArr[i] > evenArr[j])
{
}
}
}
答案 0 :(得分:12)
我会以不同的方式思考问题 - 因为oddArr
中的所有内容都要大于evenArr
中的所有内容,那么oddArr
的最小必须是大于evenArr
的最大:
if (oddArr.Min() > evenArr.Max())
(using
需要System.Linq
指令才能引入Min
和max
扩展方法。)
答案 1 :(得分:2)
如果您不想使用Linq
库,那么您可以像
int minOdd = oddArr[0];
for (int i = 1; i < oddArr.Length; i++)
{
if(minOdd>oddArr[i])
minOdd = oddArr[i];
}
int maxEven = evenArr[0]
for (int j = 0; j < evenArr.Length; j++)
{
if (maxEven > evenArr[j])
maxEven = evenArr[j];
}
if(minOdd>maxEven)
{
//do someting
}
逻辑上,如果oddArr
的每个元素都大于evenArr
的每个元素,那么oddArr
的最小数量将大于evenArr
的最大数量。
答案 2 :(得分:1)
虽然Jon Skeet的答案是更好的解决方案,但您仍然可以使用LINQ将oddArr
中的每个项目与evenArr
中的每个项目进行比较。方法如下:
var result = oddArr.All(oddItem => evenArr.All(evenItem => evenItem < oddItem));
if(result){
// every item from oddArr > every item from evenArr
// Do something
}