剑指offer(专项突破版)1.1 整数的基础知识
书上的讲解很清晰,不过好像漏掉了a=-2147483648 b=1
的情况。不知道还有没有其他方法进一步优化,留作以后更新。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| class Solution { public: int divide(int a, int b) { if(a == 0x80000000 && b == -1) return INT_MAX; if(b == 1) return a; int flag = 2; if(a > 0){ flag--; a = -a; } if(b > 0){ flag--; b = -b; } int res = 0; while(a <= b){ int divisor = b; int quotient = 1; while(divisor >= 0xc0000000 && a <= divisor + divisor){ quotient += quotient; divisor += divisor; } res += quotient; a -= divisor; } return flag==1 ? -res : res;
} };
|