快樂崇拜 小朋友的快樂值 Leetcode #3075

閱讀時間約 6 分鐘

題目敘述

輸入給定一個整數陣列,分別代表每小朋友的快樂值

要求我們選擇其中最快樂的k位小朋友,累加這群小朋友的快樂值


有一個特殊的規則,第一位選中的小朋友快樂值不變。

接著,第二位選中的小朋友快樂值-1

再接著,第三位選中的小朋友快樂值-2

快樂值扣到只剩下0就不再往下扣

...其餘依此類推


輸出時整數返回答案


原本的英文題目敘述


測試範例

Example 1:

Input: happiness = [1,2,3], k = 2
Output: 4
Explanation: We can pick 2 children in the following way:
- Pick the child with the happiness value == 3. The happiness value of the remaining children becomes [0,1].
- Pick the child with the happiness value == 1. The happiness value of the remaining child becomes [0]. Note that the happiness value cannot become less than 0.
The sum of the happiness values of the selected children is 3 + 1 = 4.

Example 2:

Input: happiness = [1,1,1,1], k = 2
Output: 1
Explanation: We can pick 2 children in the following way:
- Pick any child with the happiness value == 1. The happiness value of the remaining children becomes [0,0,0].
- Pick the child with the happiness value == 0. The happiness value of the remaining child becomes [0,0].
The sum of the happiness values of the selected children is 1 + 0 = 1.

Example 3:

Input: happiness = [2,3,4,5], k = 1
Output: 5
Explanation: We can pick 1 child in the following way:
- Pick the child with the happiness value == 5. The happiness value of the remaining children becomes [1,2,3].
The sum of the happiness values of the selected children is 5.

約束條件

Constraints:

  • 1 <= n == happiness.length <= 2 * 10^5

小朋友的總數介於1~二十萬 之間。

  • 1 <= happiness[i] <= 10^8

每味小朋友的快樂值介於1~一億 之間。

  • 1 <= k <= n

k值介於 1 ~ n 之間。


演算法 排序 或 最大堆MaxHeap

題目很明顯是要挑前k個最大的元素

這個需求可以透過排序或者建造最大堆MaxHeap來滿足

兩種解法都可以,最後複雜度也是同樣O( n log n )等級的。


有一個實作上的細節請留意,題目有額外特殊的規則,每挑一人,快樂值會遞減,一直扣到剩下零為止


程式碼 排序 或 最大堆MaxHeap

class Solution:
def maximumHappinessSum(self, happiness: List[int], k: int) -> int:

happiness.sort( reverse = True )

summation = 0

for i in range(k):

summation += max(happiness[i] - i, 0)

return summation

程式碼 最大堆MaxHeap

class Solution:
def maximumHappinessSum(self, happiness: List[int], k: int) -> int:

heapq._heapify_max(happiness)

summation = 0

for i in range(k):
cur_largest = heapq._heappop_max(happiness)
summation += max(cur_largest - i, 0)

return summation

複雜度分析

時間複雜度: O(n log n)

n個數值進行排序,所需時間為O( n log n)。


空間複雜度: O(1)

in-place排序,in-place建造最大堆,其他用到的都是固定尺寸的O(1)臨時變數。


關鍵知識點

挑前k個最大的元素

這個需求可以透過排序或者建造最大堆MaxHeap來滿足


Reference

[1] Maximize Happiness of Selected Children - LeetCode

82會員
417Content count
由有業界實戰經驗的演算法工程師, 手把手教你建立解題的框架, 一步步寫出高效、清晰易懂的解題答案。 著重在讓讀者啟發思考、理解演算法,熟悉常見的演算法模板。 深入淺出地介紹題目背後所使用的演算法意義,融會貫通演算法與資料結構的應用。 在幾個經典的題目融入一道題目的多種解法,或者同一招解不同的題目,擴展廣度,並加深印象。
留言0
查看全部
發表第一個留言支持創作者!
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
題目敘述 給定一個非零陣列nums,請找出陣列裡面 最大的對偶數 是誰? 如果無解,請返回-1 對偶數定義: 整數k的對偶數是-k 例如: 99 和 -99互為對偶數。
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
題目敘述 輸入給定一個整數陣列,分別代表每位運動員在比賽中的成績。 分數最高的給予金牌"Gold Medal" 分數次高的給予金牌"Silver Medal" 分數第三高的給予金牌"Bronze Medal" 剩餘的名次依照順序給予"4", "5", ..., "n" 的編號。 輸出時以字串
題目敘述 輸入給定一個鏈結串列,整體看代表一個十進位的數字,各別看每個節點代表每個digit,分別從最高位~最低位個位數。 要求我們把原本的數字乘以二,並且以鏈結串列的形式返回答案。 原本的英文題目敘述
題目敘述 題目給定一個鏈結串列中的節點Node,要求我們從鏈結串列中刪除該節點。 題目保證該節點不是tail node。 題目要求我們in-place原位操作。 原本的英文題目敘述 測試範例 Example 1: Input: head = [4,5,1,9], node = 5
題目敘述 輸入給定一個鏈結串列的head node。 要求我們進行化簡,只要某個節點的右手邊存在比較大的節點,就刪除掉。 例如 5->2->13->3 5的右手邊有13,所以5刪除掉。 2的右手邊有13,所以2刪除掉。 13的右手邊沒有更大的節點,所以13留著。 3的右手邊沒有更大
題目敘述 給定一個非零陣列nums,請找出陣列裡面 最大的對偶數 是誰? 如果無解,請返回-1 對偶數定義: 整數k的對偶數是-k 例如: 99 和 -99互為對偶數。
題目敘述 給定一個piles陣列,裡面對應到每堆石頭的數量。 Alice 和 Bob玩輪流取石頭的遊戲,總共有n堆石頭,每堆的石頭數量有多有少。 Alice先取,接著Bob,反覆交替,每回合輪到的人可以從當下的第一堆或者最後一堆,拿走那堆對應的石頭。 最後比誰拿到的石頭總數量比較多就獲勝。
你可能也想看
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
🌿「成為樂觀主義的信徒——相信所有的安排都是最好的安排!」 💞8折折扣碼來囉~(  ̄▽ ̄)σ 輸入解鎖折扣碼:tnuafans 來賓介紹👏👏👏 -- 導演暨劇本翻譯:黃郁晴 -- 戲劇顧問暨譯本修訂:陳建成 那個,快樂崇拜好像是首頗久之前的歌…..齁....🤔,郁晴:(遮臉
Thumbnail
滴藥散瞳前看煙火,抱歉,來不及等漲停,歡迎潘瑋柏/張韶涵 本蛙不小心又打了酸民一巴掌 現代 這個匆忙時代 雖然少了時間 但千萬不要倦怠 今天的事交給今天去做 因為明天才有很多時間一起去瘋 本想點播What a feeling,怕酸民水準太低,英文有點難……
Thumbnail
是快樂小狗。 週二的插畫課,每當進到要自己創作的環節,總是對自己沒自信,不知道該畫什麼,看了先前同學的優秀作品也會懷疑自己:我畫得出來嗎?可是!這次!對於自己畫出來的構圖滿意的不得了,還猶豫要畫哪一張好~奢侈的煩惱。 :夠喜歡的話都會畫出來的。也可以一幅手繪一幅電繪。 買了可愛熱狗吊飾,快
Thumbnail
Netflix 上的璀璨帝國第三季裡,有一句台詞是這樣的: “Unhappy people are not happy to see happy people.” 簡單說,就是自己過的不快樂的人,看什麼都不順眼;看什麼都不爽的概念。
Thumbnail
快樂,不是狀態,而是心態,一種能力, 當你有能力使自己快樂, 意謂著你有力量轉變自己看待事物的角度, 你有能力為自己選擇要快樂還是痛苦,要無力還是受苦; 快樂, 是回歸內在本質的初心,那份單純的喜悅,毋須理由, 快樂, 是見證自己的創造,而不是慣性的被接受, 快樂, 是主動選擇的能力,是知曉自己就
Thumbnail
快樂餅店復業了。上一回去香港,他們的鐵門拉下來貼上休業佈告。我站在對街,拍了兩張照片,寫了兩首詩。其中一首交給了下一期歪O歪。 復業了,像香港那樣,士農工商回到正軌。
Thumbnail
今天跟朋友聊了快樂的問題。 她跟先生一起經營公司,事業穩定,雖然求子多年,但最後也成功生下了寶貝兒子,兒子這兩天也上學了。 但她今天跟我說她做很多事情都會沒有動力,沒有目標感,連前幾天帶兒子第一次出國也沒有感到發自內心的快樂,她在尋找快樂。 我用力的+1。 她很意外我也有一樣的感受,因為她一
Thumbnail
「號錫哥。」一個女孩子的聲音傳入他耳中,他看向練習室門口,是她。 「等我一下。」他用嘴型告訴女孩他在直播,女孩也懂事的走到一旁等待。 . . . 「怎麼有空過來,不是在回歸期嗎?」他結束直播後走向女孩,記得她們才剛回歸而已。 「因為想你了。」聽見女孩軟軟的聲音,號錫知道她情緒不對。
Thumbnail
我的「未來日記」進入第四個主題「好心情」,要學著不看影響心情的事物。 於是,快樂的心情如同潑灑的水彩般渲染,肆意又張揚。 我閉上眼睛,仔細聆聽內心的歡呼,記下這樣的感覺。
Thumbnail
Day 18:來自你出生那年的歌 原諒我實在找不到出生年份的歌,於是選了晚我一年的歌。
Thumbnail
重點摘要: 1.9 月降息 2 碼、進一步暗示年內還有 50 bp 降息 2.SEP 上修失業率預期,但快速的降息速率將有助失業率觸頂 3.未來幾個月經濟數據將繼續轉弱,經濟復甦的時點或是 1Q25 季底附近
Thumbnail
近期的「貼文發佈流程 & 版型大更新」功能大家使用了嗎? 新版式整體視覺上「更加凸顯圖片」,為了搭配這次的更新,我們推出首次貼文策展 ❤️ 使用貼文功能並完成這次的指定任務,還有機會獲得富士即可拍,讓你的美好回憶都可以用即可拍珍藏!
Thumbnail
🌿「成為樂觀主義的信徒——相信所有的安排都是最好的安排!」 💞8折折扣碼來囉~(  ̄▽ ̄)σ 輸入解鎖折扣碼:tnuafans 來賓介紹👏👏👏 -- 導演暨劇本翻譯:黃郁晴 -- 戲劇顧問暨譯本修訂:陳建成 那個,快樂崇拜好像是首頗久之前的歌…..齁....🤔,郁晴:(遮臉
Thumbnail
滴藥散瞳前看煙火,抱歉,來不及等漲停,歡迎潘瑋柏/張韶涵 本蛙不小心又打了酸民一巴掌 現代 這個匆忙時代 雖然少了時間 但千萬不要倦怠 今天的事交給今天去做 因為明天才有很多時間一起去瘋 本想點播What a feeling,怕酸民水準太低,英文有點難……
Thumbnail
是快樂小狗。 週二的插畫課,每當進到要自己創作的環節,總是對自己沒自信,不知道該畫什麼,看了先前同學的優秀作品也會懷疑自己:我畫得出來嗎?可是!這次!對於自己畫出來的構圖滿意的不得了,還猶豫要畫哪一張好~奢侈的煩惱。 :夠喜歡的話都會畫出來的。也可以一幅手繪一幅電繪。 買了可愛熱狗吊飾,快
Thumbnail
Netflix 上的璀璨帝國第三季裡,有一句台詞是這樣的: “Unhappy people are not happy to see happy people.” 簡單說,就是自己過的不快樂的人,看什麼都不順眼;看什麼都不爽的概念。
Thumbnail
快樂,不是狀態,而是心態,一種能力, 當你有能力使自己快樂, 意謂著你有力量轉變自己看待事物的角度, 你有能力為自己選擇要快樂還是痛苦,要無力還是受苦; 快樂, 是回歸內在本質的初心,那份單純的喜悅,毋須理由, 快樂, 是見證自己的創造,而不是慣性的被接受, 快樂, 是主動選擇的能力,是知曉自己就
Thumbnail
快樂餅店復業了。上一回去香港,他們的鐵門拉下來貼上休業佈告。我站在對街,拍了兩張照片,寫了兩首詩。其中一首交給了下一期歪O歪。 復業了,像香港那樣,士農工商回到正軌。
Thumbnail
今天跟朋友聊了快樂的問題。 她跟先生一起經營公司,事業穩定,雖然求子多年,但最後也成功生下了寶貝兒子,兒子這兩天也上學了。 但她今天跟我說她做很多事情都會沒有動力,沒有目標感,連前幾天帶兒子第一次出國也沒有感到發自內心的快樂,她在尋找快樂。 我用力的+1。 她很意外我也有一樣的感受,因為她一
Thumbnail
「號錫哥。」一個女孩子的聲音傳入他耳中,他看向練習室門口,是她。 「等我一下。」他用嘴型告訴女孩他在直播,女孩也懂事的走到一旁等待。 . . . 「怎麼有空過來,不是在回歸期嗎?」他結束直播後走向女孩,記得她們才剛回歸而已。 「因為想你了。」聽見女孩軟軟的聲音,號錫知道她情緒不對。
Thumbnail
我的「未來日記」進入第四個主題「好心情」,要學著不看影響心情的事物。 於是,快樂的心情如同潑灑的水彩般渲染,肆意又張揚。 我閉上眼睛,仔細聆聽內心的歡呼,記下這樣的感覺。
Thumbnail
Day 18:來自你出生那年的歌 原諒我實在找不到出生年份的歌,於是選了晚我一年的歌。