class Solution {
public int divide(int dividend, int divisor) {
if (dividend == Integer.MIN_VALUE && Math.abs(divisor) == 1) {
return divisor>0?Integer.MIN_VALUE:Integer.MAX_VALUE;
}
boolean nagative=(dividend^divisor)<0;//判断两数是否符号相反
long y=Math.abs((long)dividend);
long x=Math.abs((long)divisor);
int result=0;
for(int i=31;i>=0;i--){
if(y>>i>=x){
result+=1<<i;
y-=(1<<i)*x;
}
}
return nagative?-1*result:result;
}
}
LeetCodeNo.29两数相除
最新推荐文章于 2022-01-04 22:20:17 发布