【每日一题】根据规则将箱子分类

文章目录

  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:分类讨论
  • 其他语言
    • c
    • python3
  • 写在最后

Tag

【分类讨论】【2023-10-20】


题目来源

2525. 根据规则将箱子分类

【每日一题】根据规则将箱子分类_第1张图片

题目解读

题目意思明确,根据条件判断箱子的类别。


解题思路

方法一:分类讨论

根据题目的意思模拟,首先维护两个 bool 变量 isBulkyisHeavy来记录箱子的 BulkyHeavy 状况,初始都为 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)


其他语言

c

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";
}

python3

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"

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 哦。

你可能感兴趣的:(LeetCode每日一题,分类讨论,2023-10-20,C++,算法)