两数相除

简介: 给定两个整数,被除数 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;
}

}

目录
相关文章
|
8月前
|
存储 C++
两数相加(C++)
两数相加(C++)
51 0
|
1月前
两数之和
给定整数数组 `nums` 和目标值 `target`,任务是在数组中找到和为 `target` 的两个整数并返回它们的下标。每个输入保证有唯一解,且不能重复使用同一元素。示例展示了不同情况下的输入与输出,暴力破解法通过两层循环遍历所有可能的组合来寻找解。
|
3月前
两数相除,如果有余数,输出余数
【10月更文挑战第13天】两数相除,如果有余数,输出余数。
44 4
|
3月前
|
Python
01、两数之和——2021-04-12
01、两数之和——2021-04-12
14 0
|
3月前
|
存储
Leetcode第29题(两数相除)
LeetCode第29题要求使用不包含乘法、除法和mod运算符的方法计算两个整数的商,通过记录结果的正负,将问题转化为负数处理,并利用二进制幂次方的累加来逼近除数,最后根据结果的正负返回相应的商。
22 0
|
3月前
|
Go Python
01.两数之和
01.两数之和
16 0
|
5月前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
7月前
1.两数之和
1.两数之和
|
7月前
2.两数相加
2.两数相加