剑指 Offer II 001. 整数除法
嗯。。。用的加法,注意a为最大值 b为1或者-1,还有a为负数最小值就行
也可以用位运算 << 相当于 * 2呗
其他的可以用sum + sum <= abs(a) 来优化
class Solution { public: int divide(int a, int b) { long long A = a; long long B = b; if(B == 1) return A; if(B == -1) if(A == -2147483648) return 2147483647; else return -A; bool flag1 = 0, flag2 = 0; if(A < 0) flag1 = 1; if(B < 0) flag2 = 1; A = abs(A); B = abs(B); long long cnt = 0; long long sum = 0; while(sum + sum <= A) { sum += B; cnt++; } cnt *= 2; sum += sum; while(sum > A) { cnt--; sum -= B; } if(!flag1 && flag2 || flag1 && !flag2) cnt = -cnt; return (int)cnt; } };
自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。