690. 員工重要性(Python)

題目

難度:★★☆☆☆
類型:樹結(jié)構(gòu),智力題

給定一個保存員工信息的數(shù)據(jù)結(jié)構(gòu)严就,它包含了員工唯一的id,重要度 和 直系下屬的id泉粉。

比如卵慰,員工1是員工2的領(lǐng)導(dǎo)沙郭,員工2是員工3的領(lǐng)導(dǎo)。他們相應(yīng)的重要度為15, 10, 5呵燕。那么員工1的數(shù)據(jù)結(jié)構(gòu)是[1, 15, [2]]棠绘,員工2的數(shù)據(jù)結(jié)構(gòu)是[2, 10, [3]]件相,員工3的數(shù)據(jù)結(jié)構(gòu)是[3, 5, []]再扭。注意雖然員工3也是員工1的一個下屬氧苍,但是由于并不是直系下屬,因此沒有體現(xiàn)在員工1的數(shù)據(jù)結(jié)構(gòu)中泛范。

現(xiàn)在輸入一個公司的所有員工信息让虐,以及單個員工id,返回這個員工和他所有下屬的重要度之和罢荡。

注意
一個員工最多有一個直系領(lǐng)導(dǎo)赡突,但是可以有多個直系下屬
員工數(shù)量不超過2000。

示例

輸入: [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]], 1
輸出: 11
解釋:
員工1自身的重要度是5区赵,他有兩個直系下屬2和3惭缰,而且2和3的重要度均為3。因此員工1的總重要度是 5 + 3 + 3 = 11笼才。

解答

為了便于編碼漱受,我們首先構(gòu)建了重要性字典和下屬字典,每一個員工的重要性及下屬都可以通過這兩個字典快速查看骡送。此外昂羡,我們使用隊列結(jié)構(gòu)(這在樹的層次遍歷中非常常見)構(gòu)建函數(shù),獲得某一個員工的所有下屬的id摔踱。最后虐先,通過將所有下屬的重要性進行求和,我們就可以快速尋找到某一個員工及其下屬的總重要性派敷。

class Employee:
    def __init__(self, id, importance, subordinates):
        # It's the unique id of each node.
        # unique id of this employee
        self.id = id
        # the importance value of this employee
        self.importance = importance
        # the id of direct subordinates
        self.subordinates = subordinates


class Solution:
    def getImportance(self, employees, id):
        """
        :type employees:
        :type id: int
        :rtype: int
        """
        importance = {e.id: e.importance for e in employees}        # 重要性字典{員工: 重要性}
        subordinates = {e.id: e.subordinates for e in employees}    # 下屬字典{員工: 下屬列表}

        def get_subordinates(id):                   # 獲得員工的直接與間接下屬
            all_staff = []                          # 結(jié)果列表
            queue = [id]                            # 申請隊列
            while queue:                            # 只要隊列不為空
                staff = queue.pop(0)                # 隊尾元素出隊
                all_staff.append(staff)             # 結(jié)果加入到結(jié)果列表中
                queue.extend(subordinates[staff])   # 該員工的下屬批量入隊
            return all_staff                        # 返回最終員工數(shù)量

        return sum([importance[staff] for staff in get_subordinates(id)])       # 將所有下屬的重要性求和


if __name__ == "__main__":
    employees_data = [[1, 5, [2, 3]], [2, 3, []], [3, 3, []]]
    employees = [Employee(e[0], e[1], e[2]) for e in employees_data]
    s = Solution()
    print(s.getImportance(employees, 1))

如有疑問或建議蛹批,歡迎評論區(qū)留言~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市篮愉,隨后出現(xiàn)的幾起案子般眉,更是在濱河造成了極大的恐慌,老刑警劉巖潜支,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件甸赃,死亡現(xiàn)場離奇詭異,居然都是意外死亡冗酿,警方通過查閱死者的電腦和手機埠对,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來裁替,“玉大人项玛,你說我怎么就攤上這事∪跖校” “怎么了襟沮?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我开伏,道長膀跌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任固灵,我火速辦了婚禮捅伤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巫玻。我一直安慰自己丛忆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布仍秤。 她就那樣靜靜地躺著熄诡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诗力。 梳的紋絲不亂的頭發(fā)上粮彤,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天,我揣著相機與錄音姜骡,去河邊找鬼导坟。 笑死,一個胖子當(dāng)著我的面吹牛圈澈,可吹牛的內(nèi)容都是我干的惫周。 我是一名探鬼主播,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼康栈,長吁一口氣:“原來是場噩夢啊……” “哼递递!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起啥么,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤登舞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后悬荣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菠秒,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年氯迂,在試婚紗的時候發(fā)現(xiàn)自己被綠了践叠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡嚼蚀,死狀恐怖禁灼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轿曙,我是刑警寧澤弄捕,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布僻孝,位于F島的核電站,受9級特大地震影響守谓,放射性物質(zhì)發(fā)生泄漏穿铆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一分飞、第九天 我趴在偏房一處隱蔽的房頂上張望悴务。 院中可真熱鬧睹限,春花似錦譬猫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至叨恨,卻和暖如春柳刮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背痒钝。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工秉颗, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人送矩。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓蚕甥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親栋荸。 傳聞我的和親對象是個殘疾皇子菇怀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

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

  • 給定一個保存員工信息的數(shù)據(jù)結(jié)構(gòu),它包含了員工唯一的id晌块,重要度 和 直系下屬的id爱沟。 比如,員工1是員工2的領(lǐng)導(dǎo)匆背,...
    FredricZhu閱讀 456評論 0 0
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,016評論 6 13
  • 文|搬磚哥 【渴望】 城市的夜晚充滿了嘈雜 我們住在擁擠的角落 背了井呼伸,離了家 喝著酒,吃著鄉(xiāng)愁 幻想著夢照亮了星...
    一枚搬磚哥閱讀 359評論 7 26
  • 01 2018年底,我加入了剽悍江湖行動營蝶怔,此后的幾個月生活都與它緊緊掛上了鉤奶浦。 想起當(dāng)時加入行動營,其中一個很重...
    牛魔王愛寫作閱讀 429評論 0 3
  • 你自以為是的認(rèn)為她跟你是同一類人踢星,其實人家早已走上了跟你完全不同的道路澳叉。 你頹廢,你就以為她跟你一樣胸?zé)o大志,可她...
    風(fēng)箏的小尾巴y閱讀 202評論 0 0