两数相除

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

}

目录
相关文章
|
2月前
|
存储 C++
两数相加(C++)
两数相加(C++)
30 0
|
1月前
2.两数相加
2.两数相加
|
1月前
1.两数之和
1.两数之和
|
2月前
leetcode-29:两数相除
leetcode-29:两数相除
23 0
|
8月前
|
存储
A除于B(大数相除)
A除于B(大数相除)
50 0
|
10月前
1. 两数之和
1. 两数之和
39 0
|
存储 算法 安全
LeetCode - #29 两数相除
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
存储 算法 测试技术
leetcode:29.两数相除
给定两个整数,被除数 dividend和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
65 0