
有 n 个拿着糖果的孩子。给你一个整数数组 candies,其中每个 candies[i] 代表第 i 个孩子拥有的糖果数量,以及一个整数 extracandies,表示你拥有的额外糖果数量。
返回一个长度为 n 的布尔数组结果,其中,如果给第 i 个孩子所有额外的糖果后,他们将获得所有孩子中最多的糖果,则 result[i] 为 true,否则为 false。
请注意,多个孩子可以拥有最多数量的糖果。
基本方法是:
function kidswithcandiesbasic(candies: number[], extracandies: number): boolean[] {
let maxcandies = math.max(...candies);
let result: boolean[] = [];
for (let i = 0; i < candies.length; i++) {
if (candies[i] + extracandies >= maxcandies) {
result.push(true);
} else {
result.push(false);
}
}
return result;
}
考虑到限制,该解决方案是有效的。它在允许的时间和空间复杂度内工作。
基本解决方案在时间复杂度上已经是最优的。不过,我们可以专注于让代码更加简洁和干净。
function kidswithcandiesoptimized(candies: number[], extracandies: number): boolean[] {
const maxcandies = math.max(...candies);
return candies.map(candy => candy + extracandies >= maxcandies);
}
console.log(kidsWithCandiesBasic([2,3,5,1,3], 3)); // [true, true, true, false, true] console.log(kidsWithCandiesBasic([4,2,1,1,2], 1)); // [true, false, false, false, false] console.log(kidsWithCandiesBasic([12,1,12], 10)); // [true, false, true] console.log(kidsWithCandiesOptimized([2,3,5,1,3], 3)); // [true, true, true, false, true] console.log(kidsWithCandiesOptimized([4,2,1,1,2], 1)); // [true, false, false, false, false] console.log(kidsWithCandiesOptimized([12,1,12], 10)); // [true, false, true]
寻找最大元素:
条件数组映射:
与额外值的比较:
通过练习此类问题和策略,您可以提高解决问题的能力,并为各种编码挑战做好更好的准备。
以上就是Typescript 编程编年史:拥有最多糖果的孩子的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号