【second】Divide Two Integers
考虑负数做负号运算符之后的溢出问题。
-INT_MIN int已经无法表示,溢出了,所以用long long来存
int divide(int dividend, int divisor) {
// Note: The Solution object is instantiated only once and is reused by each test case.
if(divisor==0)
return 0;
bool bNega = false;
long long divid,divis;
if((dividend>0&&divisor<0)||(dividend<0&&divisor>0))
bNega = true;
divid = abs((double)dividend);
divis = abs((double)divisor);
int res = 0;
while(divid>=divis)
{
int cnt = 1;
long long sum = divis;
while(sum+sum<divid) //二分的思想
{
sum += sum;
cnt += cnt;
}
divid -= sum;
res += cnt;
}
return (bNega?-res:res);
}
浙公网安备 33010602011771号