栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

整数除法java实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

整数除法java实现

class Solution {
    //本题要求不能使用*,/,%符号那我们只能用最原始的方式来做了,a能减多少个b是的b
    //但是这种做法的缺点在于时间复杂度为O(a),我们改进以下索性让a先减去b的一个2n方倍的小于a的最大数,然后计算出a减去了2n方个b如此循环,这样做将时间复杂度减到O(loga),
    //如何解决正负号的问题呢,我们只能将两个数全部转化为负数来做(不转化为正号的原因在于最小的一个负号转化为正号会出现溢出的情况),我们使用一个标志位来最终判断最终结果的负号。
    public int divide(int a, int b) {
        //首先判断溢出的情况
        if(a == 0x80000000 && b == -1){
            return Integer.MAX_VALUE;
        }
        //首先要做的是将除数和被除数都转化为负号,并且使用一个标志位用于判断最终的结果
        int mark = 2;
        int result = 0;
        if(a > 0){
            mark--;
            a = -a;
        }
        if(b > 0){
            mark--;
            b = -b;
        }
        //判断结束之后使用循环的方式做除法
        while(a <= b){
            int value = b;
            int step = 1;
            while(value > 0xc0000000 && value + value >= a){
                value = value + value;
                step = step + step;
            }
            result = step + result;
            a = a - value;
        }
        //最终处理除结果
        if(mark !=  1){
            return result;
        }else{
            return -result;
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/532152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号