[Leetcode] 29. Divide Two Integers

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;}}

看看花儿冲破北疆漫漫寒冬,妖娆绽放;

[Leetcode] 29. Divide Two Integers

相关文章:

你感兴趣的文章:

标签云: