2525.根据规则将箱子分类
【LetMeFly】2525.根据规则将箱子分类:优雅解法?
力扣题目链接:https://leetcode.cn/problems/categorize-box-according-to-criteria/
给你四个整数 length
,width
,height
和 mass
,分别表示一个箱子的三个维度和质量,请你返回一个表示箱子 类别 的字符串。
- 如果满足以下条件,那么箱子是
"Bulky"
的:<ul> <li>箱子 <strong>至少有一个</strong> 维度大于等于 <code>10<sup>4</sup></code> 。</li> <li>或者箱子的 <strong>体积</strong> 大于等于 <code>10<sup>9</sup></code> 。</li> </ul> </li> <li>如果箱子的质量大于等于 <code>100</code> ,那么箱子是 <code>"Heavy"</code> 的。</li> <li>如果箱子同时是 <code>"Bulky"</code> 和 <code>"Heavy"</code> ,那么返回类别为 <code>"Both"</code> 。</li> <li>如果箱子既不是 <code>"Bulky"</code> ,也不是 <code>"Heavy"</code> ,那么返回类别为 <code>"Neither"</code> 。</li> <li>如果箱子是 <code>"Bulky"</code> 但不是 <code>"Heavy"</code> ,那么返回类别为 <code>"Bulky"</code> 。</li> <li>如果箱子是 <code>"Heavy"</code> 但不是 <code>"Bulky"</code> ,那么返回类别为 <code>"Heavy"</code> 。</li>
注意,箱子的体积等于箱子的长度、宽度和高度的乘积。
示例 1:
输入:length = 1000, width = 35, height = 700, mass = 300 输出:"Heavy" 解释: 箱子没有任何维度大于等于 104 。 体积为 24500000 <= 109 。所以不能归类为 "Bulky" 。 但是质量 >= 100 ,所以箱子是 "Heavy" 的。 由于箱子不是 "Bulky" 但是是 "Heavy" ,所以我们返回 "Heavy" 。
示例 2:
输入:length = 200, width = 50, height = 800, mass = 50 输出:"Neither" 解释: 箱子没有任何维度大于等于 104 。 体积为 8 * 106 <= 109 。所以不能归类为 "Bulky" 。 质量小于 100 ,所以不能归类为 "Heavy" 。 由于不属于上述两者任何一类,所以我们返回 "Neither" 。
提示:
1 <= length, width, height <= 105
1 <= mass <= 103
方法一:优雅解法?
判断箱子是否符合bulky
或heavy
很简单,对于一些编程语言注意不要“32位整数溢出”就可以了。
得到了值为0
或1
的两个变量bulky
和heavy
,怎么“优雅”地转为字符串返回呢?
可以预先定义一个字符串数组dic = ['Neither', 'Heavy', 'Bulky', 'Both']
,这样直接返回dic[bulky * 2 + heavy]
就可以了。本质上是将这两个变量看成了dic
下标二进制下的低两位,这样就避免了四个if-else
的出现。
- 时间复杂度$O(1)$
- 空间复杂度$O(1)$
AC代码
C++
1 |
|
Python
1 |
|
同步发文于CSDN,原创不易,转载经作者同意后请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/133943695
2525.根据规则将箱子分类
https://blog.letmefly.xyz/2023/10/20/LeetCode 2525.根据规则将箱子分类/