4. 寻找两个有序数组的中位数
地址: https://leetcode-cn.com/problems/median-of-two-sorted-arrays/submissions/
题目:
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
Python3代码:
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
c=nums1+nums2
c.sort()
n=len(c)
if (n%2)==1:
result=c[int((n+1)/2)-1]
else:
result=(c[int(n/2)-1]+c[int(n/2)])/2
return result
Scala代码:
import Array._
object Solution {
def findMedianSortedArrays(nums1: Array[Int], nums2: Array[Int]): Double = {
val nums=concat(nums1,nums2).sorted
var result:Double=0
if ( nums.length%2 == 1 ){
result = nums(((nums.length+1)/2).toInt-1)
}else{
result = (nums((nums.length/2).toInt-1)+nums((nums.length/2).toInt)).toDouble/2
}
return result
}
}
注意点
- Python3 数组可以直接相加
- Python3 数据可以用 .sort 排序
- Scala数组用函数 contact连接,需要引入 Array._ 包
- Scala数组排序用 .sorted