日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《剑指offer》数据流中的中位数

發布時間:2024/1/23 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《剑指offer》数据流中的中位数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:如何得到一個數據流中的中位數?如果從數據流中讀出奇數個數值,那么中位數就是所有數值排序之后位于中間的數值。如果從數據流中讀出偶數個數值,那么中位數就是所有數值排序之后中間兩個數的平均值。

解析:由于數據是動態的添加的,不用移除,所以用list存儲添加進去的數值。關鍵點是在獲取數據流中的中位數。

注意:需要先給list排序

判斷list里面的數值的個數的奇偶性。如果是list的大小是奇數,例如里面存儲的是1 2 3 4 5,那么中位數就是3,直接list.size()/2后得到的就是中位數的下角標了。如果list的大小是偶數,例如里面存儲的是1 2 3 4。顯然中位數就是 (2 + 3)/2,那么如何求得2、3?就是list.size()-1后再除以2就得到數值2的下角標了,然后list.size()/2得到3的角標了。然后你就可以干你想干的了。

import java.util.ArrayList; import java.util.List; import java.util.Collections; public class Solution {List<Integer> list = new ArrayList<>();public void Insert(Integer num) {list.add(num);}public Double GetMedian() {Collections.sort(list);Double result=null;if(list.size()%2!=0){//奇數個數字 1 2 3 4 5result= Double.valueOf(list.get(list.size()/2));}else {//偶數個數字 1 2 3 4result=(Double.valueOf(list.get((list.size()-1)/2))+Double.valueOf(list.get(list.size()/2)))/2;}return result;}}

總結

以上是生活随笔為你收集整理的《剑指offer》数据流中的中位数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。