You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

两有序数组求中位数:为何结果为整数而非预期的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 02:35:14