1. 程式人生 > >29. Divide Two Integers

29. Divide Two Integers

一開始選擇累加(偷懶)結果是超時,然後只好用Bit Operation,參考了一篇博文

class Solution {
public:
	int divide(int dividend, int divisor) {
		if (dividend == INT_MIN&&divisor == -1)return INT_MAX;
		long long m = abs((long long)dividend), n = abs((long long)divisor), res = 0;
		int sign = ((dividend < 0) ^ (divisor <
0)) ? -1 : 1;//同0異1 while (m >= n) { long long t = n, p = 1; while (m >= (t << 1)) { t <<= 1; p <<= 1; } res += p; m -= t; } return sign == 1 ? res : -res; } };