LeetCode 29. Divide Two Integers
单纯减法不行,需要用到位运算。
a<<b表示 a*(2^b).
LeetCode出现了令人惊恐的同一段代码不同运行时间的情况.....
class Solution { public: int divide(int x, int y) { int ans=0; if (x==INT_MIN && y==-1) return INT_MAX; long a=abs((long)x),b=abs((long)y); while(a>=b) { long m=1; long t=b; while((t<<1) <a){ m<<=1;t<<=1; } a-=t;ans+=m; } if ((long)x*(long)y>0) return ans; else return -ans; } };