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;
}
}
转载请注明原文地址: https://ju.6miu.com/read-9570.html