题解 | #数据流中的中位数#
数据流中的中位数
https://www.nowcoder.com/practice/9be0172896bd43948f8a32fb954e1be1
# -*- coding:utf-8 -*-
class Solution:
nums = []
def Insert(self, num):
# write code here
# self.nums.append(num)
self.myHeapPush(num)
# print(self.nums)
def GetMedian(self):
# write code here
print(self.nums)
length = len(self.nums)
if length%2:
return self.nums[length//2]
else:
return sum(self.nums[length//2-1:length//2+1])/2
def myHeapPush(self, num_in):
if self.nums == []:
self.nums.append(num_in)
return self.nums
self.nums = [-1, -1, -1] + self.nums + [1001, 1001, 1001]
print(self.nums, num_in)
start = 0
end = len(self.nums)-1
mid = (end+start)//2
# print(self.nums[mid], num_in, self.nums[mid+1])
while not (self.nums[mid] <= num_in <= self.nums[mid+1]):
# print(mid)
if num_in > self.nums[mid] and num_in > self.nums[mid+1]:
start = mid+0
elif num_in < self.nums[mid] and num_in < self.nums[mid+1]:
end = mid+0
mid = (end+start)//2
self.nums = self.nums[3:mid+1] + [num_in] + self.nums[mid+1:-3]

腾讯成长空间 5933人发布