在线编程介绍
阿里云开发者社区在线编程产品,针对广大开发者学习、实践、面试、应聘、考试认证等打造的免费在线刷题神器。题库来自笔试模拟题、算法大赛模拟题等,界面整洁明了,操作简单,为用户营造专心答题的学习环境。点击链接开始体验:https://developer.aliyun.com/coding
本文为大家介绍其中的 第43 题:打怪兽 的题目解析,具体如下:
题目描述
题目等级:容易
知识点:排序、贪心
查看题目:打怪兽 现在有3只怪兽,他们的都有自己的血量a,b,c(1<=a,b,c<=100),当Tom打死第一怪兽的时候花费的代价为0,其余的怪兽的代价为当前的怪兽的血量减去上一个怪兽的血量的绝对值。问Tom打死这些怪兽所需要的最小代价?
分别输入三只怪兽的血量;
输出打死三只怪兽的最小代价。
示例1
输入:
2
5
8
输出:
6
解题思路:贪心
贡献者 | 郭达彬
根据题意,本题使用贪心算法完成,策略是每次打怪兽都选择代价最小的一只。
由于第一次打怪兽的花费为0,所以第一次可以打血量最小的(最大的也可以),接下来每次选择怪兽的时候就可以选择花费代价最小的。由于每次打怪兽的代价都是:当前怪兽的血量和上一个怪兽的血量的差的绝对值。于是可以得出结论,最小代价为所有怪兽血量的最大值减最小值。
时间复杂度:O(1)
空间复杂度:O(1)
趁热打铁,题目直达链接:43题:打怪兽