優(yōu)秀成績(jī)

描述

每個(gè)學(xué)生有兩個(gè)屬性 id 和 scores愉舔。找到每個(gè)學(xué)生最高的 5 個(gè)分?jǐn)?shù)的平均值炭晒。

樣例

給出 results = [[1,91],[1,92],[2,93],[2,99],[2,98],[2,97],[1,60],[1,58],[2,100],[1,61]]
返回:
1: 72.40
2: 97.40

代碼實(shí)現(xiàn)

/**
 * Definition for a Record
 * class Record {
 *     public int id, score;
 *     public Record(int id, int score){
 *         this.id = id;
 *         this.score = score;
 *     }
 * }
 */
public class Solution {
    /**
     * @param results a list of <student_id, score>
     * @return find the average of 5 highest scores for each person
     * Map<Integer, Double> (student_id, average_score)
     */
    public Map<Integer, Double> highFive(Record[] results) {
        Map<Integer, Double> answers = new HashMap<>();
        Map<Integer, PriorityQueue<Integer>> hash = new HashMap<>();
        
        for (Record r : results) {
            if(!hash.containsKey(r.id)) {
                hash.put(r.id, new PriorityQueue<Integer>()); 
            }
            //不能加else,否則id第一次加出現(xiàn)入的數(shù)組中的成績(jī)無(wú)法加入隊(duì)列中
            //else {
            //這里的else可以的原因是if語(yǔ)句進(jìn)行了第二次判斷,由于第一次
            //加入了受楼,如果原本hash不中存在的垦搬,此時(shí)肯定存在,便會(huì)將成績(jī)加入隊(duì)列
            //當(dāng)然也可以省去這里的if語(yǔ)句
            if (hash.containsKey(r.id)) {   
                PriorityQueue<Integer> pq = hash.get(r.id);
                if (pq.size() < 5) {
                    pq.add(r.score);
                } else {
                    if (pq.peek() < r.score) {
                        pq.poll();
                        pq.add(r.score); 
                    }
                }
            }
        }
        //Map.Entry是Map的嵌套類(lèi)
        // 使用Map.Entry是為了獲取每次遍歷時(shí)map的key和value艳汽,map沒(méi)有該方法的實(shí)現(xiàn)
        //hash.entrySet()是為了匹配Map.Entry
        for (Map.Entry<Integer, PriorityQueue<Integer>> map : hash.entrySet()) {
            int id = map.getKey();
            PriorityQueue<Integer> score = map.getValue();
            double average = 0;
            for (int i = 0; i < 5; i++) {
                average += score.poll();
            }
                average /=  5.0;
                answers.put(id, average);
        }
        return answers;
        
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末猴贰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子河狐,更是在濱河造成了極大的恐慌米绕,老刑警劉巖瑟捣,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異栅干,居然都是意外死亡迈套,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)碱鳞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)桑李,“玉大人,你說(shuō)我怎么就攤上這事窿给」蟀祝” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵崩泡,是天一觀的道長(zhǎng)禁荒。 經(jīng)常有香客問(wèn)我,道長(zhǎng)角撞,這世上最難降的妖魔是什么呛伴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮靴寂,結(jié)果婚禮上磷蜀,老公的妹妹穿的比我還像新娘。我一直安慰自己百炬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布污它。 她就那樣靜靜地躺著剖踊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪衫贬。 梳的紋絲不亂的頭發(fā)上德澈,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音固惯,去河邊找鬼梆造。 笑死,一個(gè)胖子當(dāng)著我的面吹牛葬毫,可吹牛的內(nèi)容都是我干的镇辉。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼贴捡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼忽肛!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起烂斋,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屹逛,失蹤者是張志新(化名)和其女友劉穎础废,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體罕模,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡评腺,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了淑掌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇僧。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖锋拖,靈堂內(nèi)的尸體忽然破棺而出诈悍,到底是詐尸還是另有隱情,我是刑警寧澤兽埃,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布侥钳,位于F島的核電站,受9級(jí)特大地震影響柄错,放射性物質(zhì)發(fā)生泄漏舷夺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一售貌、第九天 我趴在偏房一處隱蔽的房頂上張望给猾。 院中可真熱鬧,春花似錦颂跨、人聲如沸敢伸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)池颈。三九已至,卻和暖如春钓丰,著一層夾襖步出監(jiān)牢的瞬間躯砰,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工携丁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留琢歇,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓梦鉴,卻偏偏與公主長(zhǎng)得像李茫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子尚揣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • 大學(xué)畢業(yè)后的張凱賦閑在家塔次,他覺(jué)得除了找工作,應(yīng)該去學(xué)一點(diǎn)什么技術(shù)或者考個(gè)什么證書(shū)名秀。思前想后励负,他覺(jué)得去報(bào)讀法律培訓(xùn)機(jī)...
    認(rèn)真霸氣妮閱讀 313評(píng)論 0 0
  • 國(guó)家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報(bào)批稿:20170802 前言: 排版 ...
    庭說(shuō)閱讀 10,932評(píng)論 6 13
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)匕得,斷路器继榆,智...
    卡卡羅2017閱讀 134,633評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法汁掠,內(nèi)部類(lèi)的語(yǔ)法略吨,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法考阱,線(xiàn)程的語(yǔ)...
    子非魚(yú)_t_閱讀 31,598評(píng)論 18 399
  • 一翠忠、表單 ##1.表單的作用HTML 表單用于接收不同類(lèi)型的用戶(hù)輸入,用戶(hù)提交表單時(shí)向服務(wù)器傳輸數(shù)據(jù)乞榨,從而實(shí)現(xiàn)用戶(hù)...
    饑人谷_Reawei閱讀 346評(píng)論 0 0