Divide-integers without using multiplication, division and mod operator.
If It is overflow, return2147483647
Given dividend = 100
and divisor = 9
, return 11
.
Public classSolution {/** * @paramDividend The dividend *@paramdivisor the divisor *@returnThe result*/ Public intDivideintDividend,intdivisor) { //Write Your code here if(Divisor = = 0) return2147483647; if(Dividend = = 0) return0; if(Divisor = = 1) returndividend; if(Dividend = = Integer.min_value && Divisor = =-1) { returnInteger.max_value; } BooleanNeg = (Dividend < 0 && divisor > 0) | | (Dividend > 0 && Divisor < 0); Longnum = Math.Abs (Long) dividend); LongDen = Math.Abs ((Long) divisor); Longresult = 0; while(Num >=den) { intShift = 0; while(Num >= (den <<shift)) Shift++; Num-= den<< (shift-1); Result+ = 1 << (shift-1); } if(neg) {if(Result > Math.Abs (Long) integer.min_value))return2147483647; Else return(int) (-result); } Else{ if(Result > (Long) integer.max_value)return2147483647; Else return(int) result; } }}
Lintcode-medium-divide integers