今天看到一道題非常有意思的題
給你一個(gè)數(shù)組 candies 和一個(gè)整數(shù) extraCandy ,其中 candies[i] 代表第 i 個(gè)孩子擁有的糖果數(shù)目。對(duì)每一個(gè)孩子,檢查是否存在一種方案,將額外的 extraCandy 個(gè)糖果分配給孩子們之后,此孩子有 最多 的糖果。注意,允許有多個(gè)孩子同時(shí)擁有 最多 的糖果數(shù)目。
例如:
輸入:candies = [3,4,6,2,4], extraCandy = 4
輸出:[true,true,true,false,true]
輸入:candies = [5,3,2,2,3], extraCandy = 1
輸出:[true,false,false,false,false]
解題思路
我認(rèn)為這個(gè)題目出的比較好, 把抽象的代碼用比較形象的糖果問(wèn)題描繪, 給人一種很好代入感
其實(shí)這個(gè)題目難點(diǎn)有2個(gè)
找到給定數(shù)組最大元素 max
判斷元素之和是否 >= max
swift處理這題優(yōu)點(diǎn)就是, 找最大值, 判斷, 都有swift自帶的方法, 從而達(dá)到最簡(jiǎn)潔的, 最快速執(zhí)行
candies.max()! //找到最大值
map 函數(shù)判斷之和 >= max 返回 Bool數(shù)組(最終結(jié)果)
這種方法時(shí)間復(fù)雜度, 空間復(fù)雜度都最小
class Solution {
func kidsWithCandies(_ candies: [Int], _ extraCandy: Int) -> [Bool] {
let max:Int = candies.max()!
return candies.map {$0 + extraCandy >= max}
}
}
題目來(lái)源:力扣(LeetCode) 感謝力扣爸爸 :)