题目
题目链接:
https://www.nowcoder.com/practice/6fbe70f3a51d44fa9395cfc49694404f
思路
直接模拟2个数组有顺序放到一个数组中,然后返回中间的数
参考答案java
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* find median in two sorted array
* @param arr1 int整型一维数组 the array1
* @param arr2 int整型一维数组 the array2
* @return int整型
*/
public int findMedianinTwoSortedAray (int[] arr1, int[] arr2) {
int n = arr1.length;
int m= arr2.length;
int len = n+m;
int[] help = new int[len];
int x = n-1;
int y=m-1;
int z = len-1;
while (x>=0 && y>=0) {
if(arr1[x] >arr2[y]){
help[z--] = arr1[x--];
}else{
help[z--] = arr2[y--];
}
}
while (x>=0){
help[z--] = arr1[x--];
}
while (y>=0){
help[z--] = arr2[y--];
}
return help[(len-1)/2];
}
}
参考答案Go
package main
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* find median in two sorted array
* @param arr1 int整型一维数组 the array1
* @param arr2 int整型一维数组 the array2
* @return int整型
*/
func findMedianinTwoSortedAray(arr1 []int, arr2 []int) int {
n := len(arr1)
m := len(arr2)
length := n + m
help := make([]int, length)
x := n - 1
y := m - 1
z := length - 1
for x >= 0 && y >= 0 {
if arr1[x] >= arr2[y] {
help[z] = arr1[x]
z--
x--
} else {
help[z] = arr2[y]
z--
y--
}
}
for x >= 0 {
help[z] = arr1[x]
z--
x--
}
for y >= 0 {
help[z] = arr2[y]
z--
y--
}
return help[(length-1)/2]
}
参考答案PHP
<?php
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* find median in two sorted array
* @param arr1 int整型一维数组 the array1
* @param arr2 int整型一维数组 the array2
* @return int整型
*/
function findMedianinTwoSortedAray( $arr1 , $arr2 )
{
$n = count($arr1);
$m= count($arr2);
$len = $n+$m;
$help = array();
$x = $n-1;
$y = $m-1;
$z = $len-1;
while ($x >=0 && $y>=0){
if($arr1[$x] >$arr2[$y]){
$help[$z--] = $arr1[$x--];
}else{
$help[$z--] = $arr2[$y--];
}
}
while ($x>=0){
$help[$z--]= $arr1[$x--];
}
while ($y>=0){
$help[$z--] = $arr2[$y--];
}
return $help[intval(($len-1)/2)];
}