最开始有两个错误点:
1、以为合并后要把重合的数删了,其实这道题只用
(1)合并
from functools import reduce
from operator import add
nums = reduce(add,(nums1,nums2))
(2)排序
nums.sort()
(3)找中位数【注意区分数组长度是奇数和偶数的情况】
if l%2:
return nums[l//2]
else:
return (nums[l//2 - 1] +nums[l//2])/2
2、Python3的话整除才会有int强转为float的情况,所以用 // 和 / 要注意区分
3、Python list()转为set()的话可以删除重复元素,但是不能再转回list(),而且也不能排序
nums = [1,2,2,3] #list()
nums = set(list(nums))%将list转换为set
#nums = [1,2,3] 且无序
4、Python 中删除重复元素代码
#假设现在有一个数组列表,排好序
nums = [1,1,1,2,2,2,3,4]
num = nums[-1]
l = len(nums)
for i in range(l-2,-1,-1):
if num = nums[i]:
nums.remove(nums[i])
num = nums[i]
#这样就可以把重复元素去掉
#得到:
nums = [1,2,3,4]
5、最后代码:
from functools import reduce
from operator import add
class Solution(object):
def findMedianSortedArrays(self, nums1, nums2):
"""
:type nums1: List[int]
:type nums2: List[int]
:rtype: float
"""
nums = reduce(add,(nums1,nums2))#合并
nums.sort()#排序
l = len(nums)
#分情况返回数组
if l%2:
return nums[l//2]
else:
return (nums[l//2 - 1] +nums[l//2])/2