我試圖在 void 函式 'merged' 中合并兩個排序陣列,然后將合并的陣列從該函式傳遞給 'findMedianSortedArray' 以找到該合并陣列的中值。
我在弄清楚如何執行此操作時遇到了麻煩,并且已經通過 google 進行了搜索。我怎么能做到這一點?謝謝你的幫助。
下面的代碼
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2){
int[] mergedArr = new int[nums1.length nums2.length];
double median;
if(mergedArr.length %2 == 0 ){
median = (mergedArr[mergedArr.length/2] mergedArr[mergedArr.length/2 - 1] ) /2;
}else{
median = mergedArr[mergedArr.length/2];
}
return median;
}
private void merged(int[] nums1, int[] nums2, int[] mergedArr){
int i = 0;
int j = 0;
int k = 0;
while(i < nums1.length && j < nums2.length){
if(nums1[i]< nums2[j]){
mergedArr[k] = nums1[i];
i ;
}else{
mergedArr[k] = nums2[j];
j ;
}
k ;
}
while(i < nums1.length ){
mergedArr[k] = nums1[i];
i ;
j ;
}
while(j < nums2.length ){
mergedArr[k] = nums2[j];
i ;
j ;
}
}
}
uj5u.com熱心網友回復:
[1] 你的merged代碼壞了。它不會k在第二個和第三個while回圈中增加。
[2] 只是.. 稱之為:
int[] mergedArr = new int[nums1.length nums2.length];
merged(nums1, nums2, mergedArr);
第一行創建一個新陣列,其中還沒有任何內容(全為零)。第二行呼叫該merged方法,將所有 3 個陣列傳遞給它。您的merged方法的作業方式是設定第三個陣列的值。哪個是你的mergedArr,所以一旦merged回傳,它就會有你想要的。
通常,您應該撰寫一個回傳 的方法int[],并讓該merged方法創建該陣列。你的標題實際上是一個矛盾:一個void函式,根據定義,不回傳任何東西。您已經選擇了一種可以修改其引數之一的方法。有用; 它不完全是現代編碼風格。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/358003.html
