您的位置:首页 > 其它

Leetcode -- Divide Two Integers

2015-10-27 21:16 447 查看
Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

class Solution {
public:
long long divide_(long long a,long long b)
{
int flag = 1;
long long x=1;
if(a<0) {a=-a;flag=-flag;}
if(b<0) {b=-b;flag=-flag;}
if(a==0) return 0;
if(a==b) return flag;
if(a<b) return 0;
long long c=b;
while(b<=a)
{
b<<=1;
x<<=1;
}
b>>=1;
x>>=1;
long long res = x+divide_(a-b,c);
if(flag==-1) return -res;
return res;
}
int divide(int dividend, int divisor) {
long long res = divide_(dividend,divisor);
if(res>INT_MAX) return INT_MAX;
return res;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: