首页 > 解决方案 > 查找两个列表的元素之间的最大差异

问题描述

我的代码是:

int diff = 0;
  for (int i = 0; i<listOne.size(); i++)
  {
    for (int j = 0; j<listTwo.size(); j++)
    {
      if (listOne.get(i)-listTwo.get(j)>diff)
        diff = listOne.get(i)-listTwo.get(j);
      if (listTwo.get(j)-listOne.get(i)>diff)
        diff = listTwo.get(j)-listOne.get(i);
    }
  }
  return diff;

任务是找出两个输入列表中任意两个数字之间的最大差异(差异必须在列表一中的数字和列表二中的数字之间)。

我无法判断我的代码有什么问题。

标签: javalist

解决方案


您可能缺少在 diff 上执行的Math.abs。差值是绝对值,因此 5 到 7 和 7 到 5 之间的差值相同 - 2

int diff = 0;
for (int i = 0; i<listOne.size(); i++) {
  for (int j = 0; j<listTwo.size(); j++) {
    int elementDiff = Math.abs(listOne.get(i)-listTwo.get(j)); 
    if (elementDiff>diff) {
      diff = elementDiff;
  }
 }
}
return diff;

所以下面的两条线都会产生相同的结果:

int elementDiff = Math.abs(listOne.get(i)-listTwo.get(j));
int elementDiff = Math.abs(listTwo.get(i)-listOne.get(j)); 

推荐阅读