Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
class Solution{
public:
int divide(int dividend, int divisor) {
if (divisor == 0 || dividend == 0) return 0;
bool negative = (dividend < 0) ^ (divisor < 0);
long long count;
long long fianlCount = 0;
long long a = abs(dividend);
long long b = abs(divisor);
while (a >= b)
{
count = 1;
long long sum = b;
while (sum + sum <= a)
{
sum += sum;
count += count;
}
a -= sum;
fianlCount += count;
}
if (negative)
{
return 0 - fianlCount;
}
else
{
if (fianlCount> INT_MAX) return INT_MAX ;
return fianlCount;
};
}
private:
long long abs(int num)
{
long long ans;
if (num < 0)
{
ans = num;
return 0- ans;
}
else
return (long long)num;
}
};