给定两个整数,被除数 dividend
和除数 divisor
。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数 dividend
除以除数 divisor
得到的商。
示例 1:
输入: dividend = 10, divisor = 3 输出: 3
示例 2:
输入: dividend = 7, divisor = -3 输出: -2
-
public class Solution { public int divide(int dividend, int divisor) { if(divisor==0 || dividend==Integer.MIN_VALUE && divisor==-1){ return Integer.MAX_VALUE; } int res = 0; if(dividend==Integer.MIN_VALUE){ res = 1; dividend += Math.abs(divisor); } if(divisor==Integer.MIN_VALUE){ return res; } boolean isNeg = ((dividend^divisor)>>>31==1)?true:false; dividend = Math.abs(dividend); divisor = Math.abs(divisor); int digit = 0; while(divisor<=(dividend>>1)){ divisor <<= 1; digit++; } while(digit>=0){ if(dividend>=divisor){ dividend -= divisor; res += 1<<digit; } divisor >>= 1; digit--; } return isNeg?-res:res; } }