两数相除

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

}

目录
相关文章
|
3月前
|
存储 C++
两数相加(C++)
两数相加(C++)
34 0
|
4天前
|
算法
LeetCode第29题两数相除
这篇文章介绍了LeetCode第29题"两数相除"的解题方法,通过使用加法、减法和二进制位移法代替常规的乘除操作,并考虑了整数溢出问题,提供了一种高效的算法解决方案。
LeetCode第29题两数相除
|
7天前
|
JavaScript 前端开发 PHP
leetcode——两数相加【二】
leetcode——两数相加【二】
18 0
|
2月前
2.两数相加
2.两数相加
|
2月前
1.两数之和
1.两数之和
|
3月前
leetcode-29:两数相除
leetcode-29:两数相除
27 0
|
11月前
1. 两数之和
1. 两数之和
44 0
|
存储 算法 安全
LeetCode - #29 两数相除
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。