标签:c++ integer signed def only trunc store VID note
Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.
Return the quotient after dividing dividend by divisor.
The integer division should truncate toward zero.
Example 1:
Input: dividend = 10, divisor = 3 Output: 3
Example 2:
Input: dividend = 7, divisor = -3 Output: -2
Note:
AC code:
class Solution {
public:
typedef long long ll;
int divide(int dividend, int divisor) {
if (dividend == INT_MIN && divisor == -1) return INT_MAX;
int negative_nums = 0;
ll num, ans;
int res=0;
if (dividend < 0)
negative_nums++;
if (divisor < 0)
negative_nums++;
ll l_dividend = abs((ll)dividend);
ll l_divisor = abs((ll)divisor);
while (l_dividend >= l_divisor) {
num = l_divisor;
ans = 1;
while (1) {
num = num << 1;
if (l_dividend >= num) {
ans <<= 1;
} else
break;
}
num = num>>1;
l_dividend -= num;
res += ans;
}
if (negative_nums%2 == 0)
return res;
else
return -res;
}
};
Runtime: 12 ms, faster than 98.72% of C++ online submissions for Divide Two Integers.
标签:c++ integer signed def only trunc store VID note
原文地址:https://www.cnblogs.com/ruruozhenhao/p/9757498.html