LeetCode (Divide Two Integers)

来源:互联网 发布:数组 push pop 编辑:程序博客网 时间:2024/06/08 10:33

Problem:

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

Solution:

class Solution {public:    int divide(int dividend, int divisor) {        if ((dividend == INT_MIN && divisor == -1) || divisor == 0)             return INT_MAX;;        long long dvd = labs(dividend), dvs = labs(divisor);        int res = 0;        while (dvd >= dvs) {             long long temp = dvs, multiple = 1;            while (dvd >= (temp << 1)) {                temp <<= 1;                multiple <<= 1;            }            dvd -= temp;            res += multiple;        }        if (dividend >> 31 != divisor >> 31)            res = -res;        return res;    }};


0 0
原创粉丝点击