leetcode 29"/>
leetcode 29
dividend 和 divisor都是int 类型,返回值也是int类型,
在C++中,int类型表示整数类型,其范围取决于具体的实现。通常情况下,int类型的范围为-2147483648到2147483647,即-231到231-1。这是因为int类型通常为32位有符号整数。然而,具体的范围可能会因编译器、操作系统和硬件平台的不同而有所变化。为了确保跨平台的可移植性,可以使用标准库中的头文件中定义的常量来获取int类型的范围,例如INT_MIN和INT_MAX。
存在越界的问题在于, -2147483648/-1 = 2147483648 大于int的正整数边界。
class Solution {
public:int divide(int dividend, int divisor) {if(dividend == INT_MIN){if(divisor == -1){return INT_MAX;}}return dividend/divisor;}
};
leetcode 平台居然通过了,没有判断divisor==0的情况;
class Solution {
public:int divide(int dividend, int divisor) {if(dividend == INT_MIN){if(divisor == -1){return INT_MAX;}if(divisor == 1){return INT_MIN;}}if(divisor == INT_MIN){if(dividend == INT_MIN){return 1;}else{return 0;}}if(divisor == 0){return 0;}return dividend/divisor;}
};
增加对INT_MIN/INT_MIN == 1的情况的判定,可以提高运行速度。
正数除以INT_MIN不会等于0。INT_MIN是一个负数,而正数除以负数会得到一个负数的结果。在C++中,当一个正数除以一个负数时,结果会向零取整,即取整数部分,而不是四舍五入。因此,正数除以INT_MIN的结果将是一个负数。
更多推荐
leetcode 29
发布评论