两数相除

简介: 给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。整数除法的结果应当截去(truncate)其小数部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2

class Solution {
public int divide(int dividend, int divisor) {

    boolean sign = (dividend > 0) ^ (divisor > 0);
    int result = 0;
    if(dividend>0) {
        dividend = -dividend;
    }
    if(divisor>0) divisor = -divisor;
    while(dividend <= divisor) {
        int temp_result = -1;
        int temp_divisor = divisor;
        while(dividend <= (temp_divisor << 1)) {
            if(temp_divisor <= (Integer.MIN_VALUE >> 1))break;
            temp_result = temp_result << 1;
            temp_divisor = temp_divisor << 1;
        }
        dividend = dividend - temp_divisor;
        result += temp_result;
    }
    if(!sign) {
        if(result <= Integer.MIN_VALUE) return Integer.MAX_VALUE;
        result = - result;
    }
    return result;
}

}

目录
相关文章
|
6月前
|
存储 C++
两数相加(C++)
两数相加(C++)
42 0
|
30天前
两数相除,如果有余数,输出余数
【10月更文挑战第13天】两数相除,如果有余数,输出余数。
33 4
|
1月前
|
Python
01、两数之和——2021-04-12
01、两数之和——2021-04-12
10 0
|
1月前
|
存储
Leetcode第29题(两数相除)
LeetCode第29题要求使用不包含乘法、除法和mod运算符的方法计算两个整数的商,通过记录结果的正负,将问题转化为负数处理,并利用二进制幂次方的累加来逼近除数,最后根据结果的正负返回相应的商。
16 0
|
1月前
|
Go Python
01.两数之和
01.两数之和
14 0
|
3月前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
5月前
2.两数相加
2.两数相加
|
5月前
1.两数之和
1.两数之和
|
6月前
leetcode-29:两数相除
leetcode-29:两数相除
39 0