題目連結:
題目意譯:
現在有 n 個小孩各自有著糖果。你被給定一整數陣列 candies,其中 candies[i] 代表著第 i 個小孩所持有的糖果數。並再給定一整數 extraCandies,代表著你所擁有的額外糖果數。
回傳一個長度 n 的布林陣列 result,其中如果將 extraCandies 個糖果全數給予第 i 個小孩會使得該小孩成為擁有最多糖果的人的話,result[i] 之值為真(True);反之,result[i] 為假(False)。
注意到複數個小孩可以同時有著最大數量的糖果數。
限制:
n == candies.length
2 ≦ n ≦ 100
1 ≦ candies[i] ≦ 100
1 ≦ extraCandies ≦ 50
範例測資:
範例 1:
輸入: candies = [2,3,5,1,3], extraCandies = 3
輸出: [true,true,true,false,true]
解釋: 如果你將 extraCandies 全數給予:
- 小孩 1,他將有 2 + 3 = 5 個糖果,其為所有小孩中糖果數最大者。
- 小孩 2,他將有 3 + 3 = 6 個糖果,其為所有小孩中糖果數最大者。
- 小孩 3,他將有 5 + 3 = 8 個糖果,其為所有小孩中糖果數最大者。
- 小孩 4,他將有 1 + 3 = 4 個糖果,其並非所有小孩中糖果數最大者。
- 小孩 5,他將有 3 + 3 = 6 個糖果,其為所有小孩中糖果數最大者。
範例 2:
輸入: candies = [4,2,1,1,2], extraCandies = 1
輸出: [true,false,false,false,false]
解釋: 現在只有 1 個額外的糖果。
小孩 1 擁有都會有最多的糖果,即便你把額外的糖果給了不同的小孩也是一樣。
範例 3:
輸入: candies = [12,1,12], extraCandies = 10
輸出: [true,false,true]
解題思維:
先掃過一次陣列 candies,看其中的最大值為多少(假設其值為 M)。
接著再掃過一次陣列 candies,然後對於每個小孩的糖果數 candies[i] 去判斷 candies[i] + extraCandies 是否大於或等於 M。如果是則代表把 extraCandies 顆糖果都給第 i 個小孩會使得該小孩成為擁有最多糖果的人,因此 result[i] 設為真;反之,result[i] 設為假。
最後 result 即為所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。