题目
题目链接:
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 + mhelp := make([]int, length)x := n - 1y := m - 1z := length - 1for 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)];
}