两有序数组求中位数:为何结果为整数而非预期的2.5?
两有序数组中位数问题:为何整数相除得到整数结果
你编写的代码在测试用例nums1 = [1,2]、nums2 = [3,4]时,预期返回2.5但实际得到2,核心原因是你使用的是Python 2环境,Python 2中两个整数使用/运算符做除法时,会执行整数除法(舍去小数部分,只保留商的整数部分)。
你的代码如下:
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ nums3 = nums1+nums2 nums3.sort() if len(nums3)%2!=0: med = nums3[len(nums3)//2] return med else: print(nums3) med = ((nums3[len(nums3)//2]+nums3[(len(nums3)//2)-1])/2) #my problem return med
在测试用例中,nums3排序后是[1,2,3,4],nums3[2] + nums3[1]的结果是5,在Python 2中5除以2会直接舍去小数部分,得到整数2,而非预期的2.5。
解决办法:
- 手动将其中一个操作数转为浮点数,确保除法返回浮点数:
med = (float(nums3[len(nums3)//2]) + nums3[(len(nums3)//2)-1]) / 2 - 切换到Python 3环境,Python 3中
/运算符默认执行浮点数除法,5/2会直接得到2.5,你的代码无需修改即可得到正确结果
内容的提问来源于stack exchange,提问作者Harshit Singh
相关产品推荐
相关产品推荐

