将 void 函数的结果传递给 double 函数
Posted
技术标签:
【中文标题】将 void 函数的结果传递给 double 函数【英文标题】:passing the result of a void function to a double function 【发布时间】: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++;
【问题讨论】:
【参考方案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
函数不返回任何内容。您已经选择了具有修改其参数之一的方法的创造性选择。有用;这不完全是一种现代编码风格。
【讨论】:
感谢您解决这个问题。经过反思,我过度思考了这一点。以上是关于将 void 函数的结果传递给 double 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将 void* 的引用从 C++/CLI 传递给本机 C 函数
设计一个函数,对传递给他的double型数值进行四舍五入后作为int型值返回。