Given two integers dividend
and divisor
, divide two integers without using multiplication, division and mod operator.
Return the quotient after dividing dividend
by divisor
.
The integer division should truncate toward zero.
class Solution {
public:
int divide(int dividend, int divisor)
{
int flag=1;
if(dividend<0)
flag=-flag;
if(divisor<0)
flag=-flag;
long long num1=abs((long long)dividend);
long long num2=abs((long long)divisor);
long long result=0;
if(num1<num2)
return 0;
if(divisor==0)
return INT_MAX;
while(num1>=num2)
{
long long temp=num2;
int count=0;
while(temp<=num1)
{
temp=temp<<1;
count++;
}
result=result+((long long)1<<(count-1));
num1=num1-(num2<<(count-1));
}
if(flag==1&&result>INT_MAX)
return INT_MAX;
if(flag==-1&&result>INT_MAX)
return INT_MIN;
return result*flag;
}
};