480. 滑动窗口中位数

480. 滑动窗口中位数

题目描述

中位数是有序序列最中间的那个数。如果序列的长度是偶数,则没有最中间的数;此时中位数是最中间的两个数的平均数。

例如:

[2,3,4],中位数是 3
[2,3],中位数是 (2 + 3) / 2 = 2.5
给你一个数组 nums,有一个长度为 k 的窗口从最左端滑动到最右端。窗口中有 k 个数,每次窗口向右移动 1 位。你的任务是找出每次窗口移动后得到的新窗口中元素的中位数,并输出由它们组成的数组。

解题:双指针暴力破解

class Solution:
    def medianSlidingWindow(self, nums: List[int], k: int) -> List[float]:
        left = 0
        right = k
        ans = []
        if k % 2 == 0:
            flag = True
            delta = (k/2)-1
        else:
            flag = False
            delta = (k//2)
        delta = int(delta)
        while right <= len(nums):
            lst = nums[left: right]
            lst.sort()
            if flag == True:
                mid = (lst[delta]+lst[delta+1])/2
            if flag == False:
                mid = lst[delta]
            ans.append(mid)
            left += 1
            right += 1
        return ans

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_51174011/article/details/113620616