// 5.2
// Divide Two Integers
// Divide two integers without using multiplication, division and mod operator.
// If it is overflow, return MAX_INT.
public static int divide(int dividend, int divisor) {
int tempDividend = Math.abs(dividend);
int tempDivisor = Math.abs(divisor);
if (tempDividend == Integer.MIN_VALUE) {
tempDividend = Integer.MAX_VALUE;
}
if (tempDivisor == Integer.MIN_VALUE) {
tempDivisor = Integer.MAX_VALUE;
}
if (divisor == 0) {
return Integer.MAX_VALUE;
} else if (tempDividend < tempDivisor || tempDivisor == 0) {
return 0;
}
int flag = dividend > 0 && divisor < 0 || dividend < 0 && divisor > 0 ? -1 : 1;
if (flag == 1) {
return divideRes(tempDividend, tempDivisor);
} else {
return -divideRes(tempDividend, tempDivisor);
}
}
static public int divideRes(int dividend, int divisor) {
if (dividend < divisor) {
return 0;
}
int sum = divisor;
int mul = 1;
while ((sum + sum) < dividend) {
sum += sum;
mul += mul;
}
return mul + divideRes(dividend - sum, divisor);
}
不用乘除和mod,算两个整数相除
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 寒冷的黑夜刚过去,红彤彤的太阳升起来了。一群刚睡醒的猴子,以为太阳掉到蓝色的海里去了。潜到海里捞太阳,水面露出来了...