【分类讨论】【2023-10-20】
2525. 根据规则将箱子分类
题目意思明确,根据条件判断箱子的类别。
根据题目的意思模拟,首先维护两个 bool
变量 isBulky
和 isHeavy
来记录箱子的 Bulky
和 Heavy
状况,初始都为 false
。
根据箱子的任一维度大于等于 1e4
与否或者箱子的体积大于等于 1e9
与否更新 isBulky
。需要注意点是体积可能会越界(超出int整型可以表示的最大范围),因此先将体积强转成 long long
类型,再以 1e9
进行比较。
根据箱子的质量是否大于等于 100
更新 isHeavy
。
接下来就是条件语句的书写了,这里没有使用 if...else ..
语句,而是直接使用的 if
,这样可以省去一些判断上的失误。但是并不是所有的 if...else ..
语句都可以改成 if
语句,至少本题是可以修改的。
实现代码
class Solution {
public:
string categorizeBox(int length, int width, int height, int mass) {
bool isBulky = false;
bool isHeavy = false;
if (length >= 1e4 || width >= 1e4 || height >= 1e4 || (long long) length * width * height >= 1e9) {
isBulky = true;
}
if (mass >= 100) isHeavy = true;
if (isBulky && isHeavy) return "Both";
if (!isBulky && !isHeavy) return "Neither";
if (isBulky && !isHeavy) return "Bulky";
return "Heavy";
}
};
复杂度分析
时间复杂度: O ( 1 ) O(1) O(1)。
空间复杂度: O ( 1 ) O(1) O(1)。
char * categorizeBox(int length, int width, int height, int mass){
int x = (length >= 10000 || width >= 10000 || height >= 10000 || (long long)length * height * width >= 1000000000);
int y = (mass >= 100);
if (x && y) return "Both";
if (x) return "Bulky";
if (y) return "Heavy";
return "Neither";
}
class Solution:
def categorizeBox(self, length: int, width: int, height: int, mass: int) -> str:
x = length >= 10000 or width >= 10000 or height >= 10000 or length * width * height >= 10 ** 9
y = mass >= 100
if x and y: return "Both"
if x: return "Bulky"
if y: return "Heavy"
return "Neither"
如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 。
如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。
最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 哦。