我正在处理返回两个数组中最大数的程序。下面是一些期望:Java - 返回两个数组中的最大元素
maxInCommon({1, 2, 3, 4, 5, 6, 7, 8}, {-1, -2, 9, 5}) → 5
maxInCommon({1}, {}) → 0
maxInCommon({-1, -2}, {-2, -3, -4}) → -2
我的代码工作在很多情况下,但不是这一个:
asn9_maxInCommon({-10, -11}, {-10, -11, -12}) → -10
而不是产生“-10”的,我的程序返回“-11”。以下是我的更新代码:
public int maxInCommon(int[] nums1, int[] nums2) {
int numInCommon = 0;
Arrays.sort(nums1);
Arrays.sort(nums2);
ArrayList<Integer> nums1List = new ArrayList();
ArrayList<Integer> nums2List = new ArrayList();
int number = 0;
int number1 = 0;
for (int a = 0; a < nums1.length; a++)
{
number = nums1[a];
nums1List.add(number);
}
for (int b = 0; b < nums2.length; b++)
{
number1 = nums2[b];
nums2List.add(number1);
}
for (int c = (nums1List.size() - 1); c > - 1; c--)
{
for (int d = (nums2List.size() - 1); d > -1; d--)
{
if (nums1List.get(c) == nums2List.get(d))
numInCommon = nums1List.get(c);
}
}
return numInCommon;
}
我认为代码的逻辑应该没问题,但它仍然不起作用。逻辑失败的一些其他情况是:
maxInCommon({0,2}, {0,1,2}) → 2
我的代码产生“0”代替。
maxInCommon({1, 2, 3, 4, 5, 6, 7, 8}, {-1, -2, 9, 6, 7, 8, 9}) → 8
我的代码产生“6”代替。
ArrayLists的目的是以某种方式在每次比较后删除一个元素。我没有在这里使用过这个功能。
你应该改变'numInCommon'只有在实际的共同价值高于最后的共同价值大发现 – 2012-04-01 05:43:58
没错。只需添加一个检查来查看是否max1 == nums2 [b]并且该max1> numInCommon。 – cjm 2012-04-01 05:49:20
谢谢大家,我会分别研究你的每一个建议。 – 2012-04-01 06:24:40