Go语言实现:【剑指offer】数据流中的中位数

该题目来源于牛客网《剑指offer》专题。

如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。

Go语言实现:

var numArr = []int{}

func insert1(num int) {
   numArr = append(numArr, num)
}

func getMedian() float64 {
   length := len(numArr)
   if length == 0 {
      return -1
   }
   sort.Ints(numArr)
   if length%2 == 0 {
      return float64(numArr[length/2-1]+numArr[length/2])/2
   } else {
      return float64(numArr[length/2])
   }
}
posted @ 2019-12-03 17:15  南方有嘉木1993  阅读(139)  评论(0编辑  收藏  举报