class Solution {
public:
int divide(int dividend, int divisor) {
if(divisor == 0 || (dividend == INT_MIN && divisor == -1))
{
return INT_MAX;
}
int result = 0;
if(dividend == 0)
{
return result;
}
if(abs(divisor) == 1)
{
return divisor > 0 ? dividend:-dividend;
}
int flag = 1;
if((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0))
{
flag = -1;
}
long chu = (long)abs(dividend);
long beichu = (long)abs(divisor);
for(int i = 31; i >= 0; i--)
{
long temp = (long)1 << i;
if(chu < temp*beichu)
{
continue;
}
chu -= temp*beichu;
result += temp;
}
return result*flag;
}
};
【LeetCode热题100道】29. 两数相除
最新推荐文章于 2024-07-21 11:20:00 发布