Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
这道题如果不用long而用int定义a和b的话,就会超时,对于这一点并不是很懂,,希望知道原因的小伙伴能够告知,谢谢!
public class Solution {public int divide(int dividend, int divisor) {if(divisor == 0){if(dividend >= 0) return Integer.MAX_VALUE;else return Integer.MIN_VALUE;}if(dividend == 0) return 0;if(dividend == Integer.MIN_VALUE && divisor == -1) return Integer.MAX_VALUE;boolean isNegative = false;if((dividend > 0 && divisor < 0) || (dividend < 0 && divisor > 0)) isNegative = true;long a = Math.abs((long)dividend);long b = Math.abs((long)divisor);int result = 0;while(a >= b){int shift = 0;while(a >= (b << shift)){shift++;}result += 1 << (shift – 1);a -= b << (shift – 1);}return isNegative? -result: result;}}
看看花儿冲破北疆漫漫寒冬,妖娆绽放;