LeetCode 4.寻找两个有序数组的中位数
程序员文章站
2022-04-17 16:57:38
...
LeetCode 4.寻找两个有序数组的中位数
题目难度 : 困难
题目描述
思路求解
看到题目要求的复杂度是对数级,第一时间想到的是二分法,但是仔细看了一下题目感觉并不是很容易实现
后来,我尝试 合并数组,重新排序,求中位数这种违规操作,竟然AC了。。。
今天又回到了二分法,每次从两个数组某一个的首尾各去掉一个元素,知道两个数组的元素总数小于等于二,停止取平均
看代码吧,主要是循环条件,没什么技术性
代码求解
class Solution:
def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:
while len(nums1)+len(nums2)>2:
if not nums1:
nums2.pop(0)
nums2.pop(-1)
continue
if not nums2:
nums1.pop(0)
nums1.pop(-1)
continue
if nums1[0]>nums2[0]:nums2.pop(0)
else:nums1.pop(0)
if not nums1:nums2.pop(-1)
elif not nums2:nums1.pop(-1)
else:
if nums1[-1]>nums2[-1]:nums1.pop(-1)
else:nums2.pop(-1)
return sum(nums1+nums2)/len(nums1+nums2)
提交结果
欢迎关注公众号 : 数学算法实验室