美文网首页
29. 两数相除

29. 两数相除

作者: 名字是乱打的 | 来源:发表于2022-01-09 19:42 被阅读0次

一 题目:

二 思路:

采用二分法的思想,dividend每次减去2^n个divisor(尽可能多),同时reslut每次加2^n

三 代码:

class Solution {
    public int divide(int dividend, int divisor) {
        if (dividend==Integer.MIN_VALUE&&divisor==-1){
            return Integer.MAX_VALUE;
        }

        //判断符号是否一致
        //这里不能用两者的乘法做运算,因为可能会移除变负数;
        boolean same= (dividend>0&&divisor>0||dividend<0&&divisor<0)?true:false;

        // 将被除数和除数都转成正数或负数进行计算
        // 由于在Java中,当t=Integer.MIN_VALUE时(t取相反数依旧是它本身)此时可能存在越界问题,因此都用负数进行计算
        dividend=-Math.abs(dividend);
        divisor=-Math.abs(divisor);
        int res=0;
        while (dividend<=divisor){
            int temp=divisor;
            //记录有多少个divisor
            int count=1;
            //dividend每次减去2^n个divisor(尽可能多),同时reslut每次加2^n
            while (dividend-temp<=temp){
                //temp*2,count*2;
                temp=temp<<1;
                count=count<<1;
            }
            //减去2的n次方个divisor
            dividend=dividend-temp;
            res=res+count;
        }
        return same? res:-res;
    }
}

相关文章

  • 29. 两数相除

    29. 两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法...

  • 29. 两数相除

    29.两数相除 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和...

  • LeetCode 29. 两数相除

    29. 两数相除 题目来源:https://leetcode-cn.com/problems/divide-two...

  • 29. 两数相除

    29. 两数相除 题目链接:https://leetcode-cn.com/problems/divide-two...

  • 29.两数相除

    题目****给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 m...

  • 29. 两数相除

  • 29. 两数相除

    一、题目 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mo...

  • 29. 两数相除

    自己解法 自己的解法,想着是不能乘除和mod的话,就只有用加减运算了,于是写了个循环减除法的解法,这个解法显然没通...

  • 29. 两数相除

  • 29.两数相除

    题目描述: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 m...

网友评论

      本文标题:29. 两数相除

      本文链接:https://www.haomeiwen.com/subject/uenucrtx.html