【问题标题】:passing the result of a void function to a double function将 void 函数的结果传递给 double 函数
【发布时间】:2021-12-27 00:00:54
【问题描述】:

我正在尝试在 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++;
            
        }
    }
        
}

【问题讨论】:

    标签: java arrays function parameters median


    【解决方案1】:

    [1] 您的merged 代码已损坏。它不会在第二个和第三个while 循环中增加k

    [2] 就……叫它吧:

    int[] mergedArr = new int[nums1.length+nums2.length];
    merged(nums1, nums2, mergedArr);
    

    第一行创建了一个新数组,其中还没有任何内容(全为零)。第二行调用 merged 方法,将所有 3 个数组传递给它。 merged 方法的工作方式是设置第三个数组的值。哪个是你的mergedArr,所以一旦merged 返回,它就会有你想要的。

    通常您会改为编写一个返回int[] 的方法,并使用merged 方法制作该数组。您的标题实际上是矛盾的:根据定义,void 函数不返回任何内容。您已经选择了具有修改其参数之一的方法的创造性选择。有用;这不完全是一种现代编码风格。

    【讨论】:

    • 感谢您解决这个问题。经过反思,我过度思考了这一点。
    猜你喜欢
    • 2013-10-19
    • 2021-02-27
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多