Divide Two Integers

来源:互联网 发布:wav音轨分离软件 编辑:程序博客网 时间:2024/06/04 19:53

Divide two integers without using multiplication, division and mod operator.

思路:不能用乘除模运算,只能用减法或加法做了

代码一:Time limit exceed

public static int divide(int dividend, int divisor) {        int result = 0;        if(dividend < 0 && divisor < 0)        return divide(Math.abs(dividend), Math.abs(divisor));        else if(dividend < 0 && divisor > 0)        return -1 * divide(Math.abs(dividend), divisor);        else if(dividend > 0 && divisor < 0)        return -1 * divide(dividend, Math.abs(divisor));        else        {        while(dividend >= divisor)            {            result++;            dividend -= divisor;            }            return result;        }    }


代码二:类似二分的思想

public static int divide_2(int dividend, int divisor) {if(dividend == 0 || divisor == 0)return 0;int flag = 1, tmp, result = 0;if((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0))flag = -1;long c = dividend;long d = divisor;long a = Math.abs(c);long b = Math.abs(d);if(b > a)return 0;while(a >= b){tmp = 1;long sum = b;while(sum + sum <= a){sum += sum;tmp += tmp;}a -= sum;result += tmp;}return flag * result;}


 

0 0
原创粉丝点击