f**********t 发帖数: 1001 | 1 我的方法如下:
int divide(int dividend, int divisor) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if (divisor == 0)
return 0;
int sign = 1;
if (dividend * divisor < 0)
sign = -1;
if (dividend < 0)
dividend *= -1;
if (divisor < 0)
divisor *= -1;
int result = 0;
int tmp;
int tmpret;
while (dividend >= divisor) {
tmp = divisor;
tmpret = 1;
while (dividend >= tmp) {
tmp <<= 1;
tmpret <<= 1;
} //每次除数*2,尽可能的从被除数里面减
tmp >>= 1;
tmpret >>= 1;
result += tmpret;
dividend -= tmp;
}
return result * sign;
}
结果应该是对的,但是跑出来显示time limit exceeded. 有啥更好的方法? |
|