0
点赞
收藏
分享

微信扫一扫

整数除法---2022/03/07

三分梦_0bc3 2022-03-11 阅读 52

文章目录

题目描述

给定两个整数 a 和 b ,求它们的除法的商 a/b ,要求不得使用乘号 ‘*’、除号 ‘/’ 以及求余符号 ‘%’ 。
注意:
整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2
假设我们的环境只能存储 32 位有符号整数。
题目来源

解题思考

代码实现

public int divide(int a, int b) {
        if(a==-2147483648&&b==-1) {
			return 2147483647;
		}
        if(a==0)return 0;
        boolean flag=a>0&&b>0||a<0&&b<0;
        long d=a,v=b;
        
        if(d<0)
        {
            d=-d;
        }
        if(v<0)
        {
            v=-v;
        }
        if(d<v)return 0;
        int result=0;
        int k=1;
        long temp=v;
        while(temp+temp<=a){
            temp=temp<<1;
            k=k<<1;
        }
        result+=k;
        d-=temp;
        while(d>=v)
        {
            result++;
            d-=v;
        }
        if(flag)    return result;
        return result*(-1);
    }

性能评估

在这里插入图片描述
时间性能不行。我发现,如果直接用系统除法,可以达到百分百,,但是其实是违反了题目要求的。对比一下吧。

举报

相关推荐

0 条评论