【leetcode每日一题】【2019-04-11】4. 寻找两个有序数组的中位数

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
    }
}

注意点

  1. Python3 数组可以直接相加
  2. Python3 数据可以用 .sort 排序
  3. Scala数组用函数 contact连接,需要引入 Array._ 包
  4. Scala数组排序用 .sorted
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值