leetcode 29. Divide Two Integers
不用乘号、除号和取模来实现除法。
思路:通过移位来进行计算被除数可以减去多少次的除数。
class Solution {
public:
int divide(int dividend, int divisor) {
if(dividend==INT_MIN&&divisor==-1)return INT_MAX;
long long a=labs(dividend),b=labs(divisor),res=0;
int s=(dividend>0)^(divisor>0)?-1:1;
while(a>=b){
long long tmp=b,m=1;
while(tmp<<1 <= a){
tmp<<=1;
m<<=1;
}
a-=tmp;
res+=m;
}
return res*s;
}
};