链接:https://www.lintcode.com/zh-cn/problem/divide-two-integers/
将两个整数相除,要求不使用乘法、除法和 mod 运算符。
如果溢出,返回 2147483647
。
样例
给定被除数 = 100
,除数 = 9
,返回 11
。
class Solution { public: /** * @param dividend the dividend * @param divisor the divisor * @return the result */ int divide(int dividend, int divisor) { // Write your code here bool resultGreatThanZero = true; if(dividend>0&&divisor<0||dividend<0&&divisor>0) resultGreatThanZero = false; long long ret = 0; long long d1 = abs((long long)dividend); long long d2 = abs((long long)divisor); while(d1>=d2) { long long temp = d2; long long cnt = 1; while(d1>=temp) { d1-=temp; ret+=cnt; cnt = cnt<<1; temp = temp<<1; } } if(!resultGreatThanZero) ret*=-1; if(ret<(long long)INT_MIN||ret>(long long)INT_MAX) return INT_MAX; return ret; } };