Divide Two Integers

来源:互联网 发布:软件 地图 编辑:程序博客网 时间:2024/05/12 21:11

不能用乘除取模做除法。

思路:现在只有加减,位运算可以使用。 主要是用减法来实现除法:统计被除数可以减多少次除数。利用2分思想降低时间复杂度。再稍作边界条件判断,代码如下:

public class Solution {    public int div(long dividend, long divisor, long currentDivisor, long times){if(dividend < divisor) return 0;if(dividend >= currentDivisor){return (int)times + div(dividend-currentDivisor, divisor, currentDivisor<<1, times<<1);}else{return div(dividend, divisor, currentDivisor>>1, times>>1);}}        public int divide(int dividend, int divisor) {        // Start typing your Java solution below        // DO NOT write main() function        long a = dividend, b = divisor;        if(b==0) return 0;        int flag = 1;        if(a < 0) { a = -a; flag = -flag;}        if(b < 0) { b = -b; flag = -flag;}                int re = div(a, b, b, 1);        if(flag == -1) re = -re;        return re;    }}


原创粉丝点击