【Leetcode】29. Divide Two Integers

【Leetcode】29. Divide Two Integers_第1张图片
【Leetcode】29. Divide Two Integers_第2张图片

1 不能用除法,乘法和取余,那就只剩加减法,可以使用while循环每次做减法,但这样,当被除数很大,除数很小的时候,就会出现超时

2 除了加减乘除取余,还有就是移位操作

3 min(max(-2147483648, res), 2147483647) 是为了防止res overflow

4 2147483647是2**31-1,因为题意说了是在这个范围

5 这里有两层while循环,内层循环使用位移操作,可以加快找到商的速度,但是当位移数太大的时候,不足以做细小的减法,所以还需要外层while循环来做补充

6 在最开始的时候,我们需要判断dividend和divisor

7 positive =  (dividend<0) is (divisor<0) 这句code作用是:如果is两端都为True的话,positive就是True;如果is两端都是False的话,positive也是True;两个一个为正,一个为负的话,positive就是False

8 a << 1 is equal to a * 2


【Leetcode】29. Divide Two Integers_第3张图片

你可能感兴趣的:(【Leetcode】29. Divide Two Integers)