Divide two integers without using multiplication, division and mod operator.
分析:
不能用乘,除,取模来计算除法,只能用加减了,但一个一个减肯定不行。
每次使除数翻倍就可以了。
public class Solution {
public int divide(int dividend, int divisor) {
if(dividend==0 || divisor==0) return 0;
//是否为负
boolean isNeg = (dividend>0&&divisor<0)||(dividend<0&&divisor>0);
long a = Math.abs((long)dividend);
long b = Math.abs((long)divisor);
//除数大于被除数
if(b>a) return 0;
long sum=0;
long pow=0;
int result=0;
while(a>=b){
pow=1;
sum=b;
//sum每次翻倍
while(sum+sum<=a){
sum += sum;
pow += pow;
}
a -= sum;
result += pow;
}
return isNeg ? -result : result;
}
}