每日编程中遇到任何疑问、意见、建议请公众号留言或直接撩Q474356284(备注每日编程)
今日问题:
给定两个大小为 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
解决方法:
暴力解法,将两个数组合并,判断奇偶个数,返回中位数。遍历整个数组,时间复杂度和空间复杂度皆为O(m+n).
C++代码:
C代码:
Java代码:
明日题目预告:
两个排序数组的中位数II
给定两个大小为 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