题解 | #多数组中位数#

多数组中位数

https://www.nowcoder.com/practice/b6bb0bce88894108bfc23e9b7b012420

def findKthNum(self , arr1: List[int], arr2: List[int], target: int) -> int:
        c1, c2 = 0, 0 
        num1, num2 = 0, 0
        for _ in range(target):
            num1 = arr1[c1] if c1 < len(arr1) else float('inf')
            num2 = arr2[c2] if c2 < len(arr2) else float('inf')
            if num1 > num2:
                c2 += 1
            else:
                c1 += 1
        return num1 if num1 < num2 else num2
            
    def getUpMedian(self , arr1: List[int], arr2: List[int]) -> int:
        # 中位数,左边和右边数量一样多 
        n = len(arr1) + len(arr2) 
        k = n // 2 + 1 if n % 2 else n // 2
        
        # 用上一题第k小的数 求出中位数 
        return self.findKthNum(arr1, arr2, k)
        
        # 或者用最小和最大堆 

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务