Given two integers dividend
and divisor
, divide two integers without using multiplication, division and mod operator.ide
Return the quotient after dividing dividend
by divisor
.this
The integer division should truncate toward zero.spa
Example 1:.net
Input: dividend = 10, divisor = 3 Output: 3
Example 2:code
Input: dividend = 7, divisor = -3 Output: -2
Note:blog
轉載自:https://blog.csdn.net/lixq05/article/details/81157304ip
這個思路比較清晰it
class Solution { public: long long ABS(long long a) { return a > 0 ? a : -a; } int divide(int dividend, int divisor) { if (divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX; long long a = ABS((long long)dividend); long long b = ABS((long long)divisor); long long sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1; long long res=0; long long tmp[33], times[33]; //第一組數據填充 tmp[0] = b; times[0] = 1; int index = 0; //一直填充到臨界大於a的位置 while (a >= tmp[index] && index < 33) { index++; tmp[index] = tmp[index - 1] + tmp[index - 1]; times[index] = times[index - 1] + times[index - 1]; } //遍歷填充數據 for (int j = index - 1; j >= 0; j--) { while (a >= tmp[j]) { res += times[j]; a -= tmp[j]; } } res = (sign == 1) ? res : -res; return (int)res; } };