我正在處理返回兩個數組中最大數的程序。下面是一些期望: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