您的位置:首页 > 编程语言 > Java开发

[Leetcode] Divide Two Integers (Java)

2013-12-28 18:00 218 查看
Divide two integers without using multiplication, division and mod operator.

输入两个整数,dividend, divisor,不要使用乘法,除法,取模运算,求出a/b的值。

如果每次减divisor,会超时,让sum=b,每次sum翻倍,然后count也翻倍,效率会高点儿

public class DivideTwoIntegers {
public int divide(int dividend, int divisor) {
int res=0;
if(dividend==0||divisor==0)
return 0;
boolean flag = true;
if((dividend>0&&divisor<0)||(dividend<0&&divisor>0))
flag = false;
long a = Math.abs((long)dividend);
long b = Math.abs((long)divisor);
long sum;
int count;
while(a>=b){
sum = b;
count = 1;
while(sum+sum<=a){
count+=count;
sum+=sum;
}
a-=sum;
res+=count;
}
return flag?res:-res;
}
public static void main(String[] args) {
int dividend = 1;
int divisor = 1;
System.out.println(new DivideTwoIntegers().divide(dividend, divisor));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: