题解 | #数据流中的中位数#
数据流中的中位数
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]