将 void 函数的结果传递给 double 函数
passing the result of a void function to a double function
我正在尝试在 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] 您的 merged
密码已损坏。它不会在第二个和第三个 while
循环中递增 k
。
[2] 就……叫它:
int[] mergedArr = new int[nums1.length+nums2.length];
merged(nums1, nums2, mergedArr);
第一行创建了一个新数组,其中还没有任何内容(全为零)。第二行调用 merged
方法,将所有 3 个数组传递给它。 merged
方法的工作方式是设置第三个数组的值。这是你的 mergedArr
,所以一旦 merged
return,它就会有你想要的。
通常你会写一个 returns int[]
的方法,并让 merged
方法 make 该数组。您的标题实际上是一个矛盾修饰法:根据定义,void
函数没有 return 任何东西。您已经做出了创造性的选择,选择了一种修改其参数之一的方法。有用;这不完全是一种现代编码风格。
我正在尝试在 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] 您的 merged
密码已损坏。它不会在第二个和第三个 while
循环中递增 k
。
[2] 就……叫它:
int[] mergedArr = new int[nums1.length+nums2.length];
merged(nums1, nums2, mergedArr);
第一行创建了一个新数组,其中还没有任何内容(全为零)。第二行调用 merged
方法,将所有 3 个数组传递给它。 merged
方法的工作方式是设置第三个数组的值。这是你的 mergedArr
,所以一旦 merged
return,它就会有你想要的。
通常你会写一个 returns int[]
的方法,并让 merged
方法 make 该数组。您的标题实际上是一个矛盾修饰法:根据定义,void
函数没有 return 任何东西。您已经做出了创造性的选择,选择了一种修改其参数之一的方法。有用;这不完全是一种现代编码风格。