IOS 算法(基础篇) ----- 拥有最多糖果的孩子
2020-07-07 本文已影响0人
ShawnAlex
今天看到一道题非常有意思的题
如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你!
给你一个数组 candies 和一个整数 extraCandy ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。
对每一个孩子,检查是否存在一种方案,将额外的 extraCandy 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。
例如:
输入: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]
我认为这个题目出的比较好, 把抽象的代码用比较形象的糖果问题描绘, 给人一种很好代入感
其实这个题目难点有2个
找到给定数组最大元素 max
判断元素之和是否 >= max
swift处理这题优点就是, 找最大值, 判断, 都有swift自带的方法, 从而达到最简洁的, 最快速执行
candies.max()! //找到最大值
map 函数判断之和 >= max 返回 Bool数组(最终结果)
这种方法时间复杂度, 空间复杂度都最小
class Solution {
func kidsWithCandies(_ candies: [Int], _ extraCandy: Int) -> [Bool] {
let max:Int = candies.max()!
return candies.map {$0 + extraCandy >= max}
}
}
题目来源:力扣(LeetCode) 感谢力扣爸爸 :)