29. 两数相除(LeetCode中等)(二进制)
class Solution {
public:
int divide(int dividend, int divisor) {
typedef long long LL;
vector<LL> exp;
bool is_minus = false;
if(dividend < 0 && divisor > 0 || dividend > 0 && divisor < 0) is_minus = true;
LL a = abs(LL(dividend)), b = abs(LL(divisor));
for(LL i = b; i <= a; i += i) exp.push_back(i);
LL res = 0;
for(int i = exp.size() - 1; i >= 0; --i){
if(a >= exp[i]){
a -= exp[i];
res += 1ll << i;
}
}
if(is_minus) res *= -1;
if(res > INT_MAX) res = INT_MAX;
return res;
}
};


浙公网安备 33010602011771号