您的位置:首页 > 其它

[LeetCode]29. Divide Two Integers

2017-03-09 11:05 211 查看
https://leetcode.com/problems/divide-two-integers/?tab=Description

两个Integer做除法

1、判断符号;2、不断翻倍累加,记录翻的倍数;3、用long!!!!

public class Solution {
public int divide(int dividend, int divisor) {
if (divisor == 0 || (dividend == Integer.MIN_VALUE && divisor == -1)) {
return Integer.MAX_VALUE;
}
int sign = (dividend > 0) ^ (divisor > 0) ? 1 : 0;
int res = 0;
long did = Math.abs((long)dividend);
long dis = Math.abs((long)divisor);
while (did >= dis) {
long temp = dis;
long multi = 1;
while (did >= (temp << 1)) {
temp <<= 1;
multi <<= 1;
}
res += multi;
did -= temp;
}
return sign == 0 ? res : -res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: