LEETCODE: Divide Two Integers

来源:互联网 发布:建造者模式 java 编辑:程序博客网 时间:2024/06/08 07:11
Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.


class Solution {public:    int divide(int dividend, int divisor) {        if(dividend == INT_MIN && divisor == -1) return INT_MAX;        int sign = 1;if(dividend < 0)sign *= -1;if(divisor < 0)sign *= -1;long long big = abs((long long)dividend);long long small = abs((long long)divisor);long long temp = small;long long midres = 1;while(temp < big){temp <<= 1;midres <<= 1;}int ret = 0;while(temp >= small){while(big >= temp){big -= temp;ret += midres;}temp >>= 1;midres >>= 1;}return ret*sign;    }};


0 0