给定两个整数,被除数dividend和除数divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。
返回被除数dividend除以除数divisor得到的商。
示例 1:
输入:dividend = 10, divisor = 3输出:3
示例 2:
输入:dividend = 7, divisor = -3输出:-2
说明:
被除数和除数均为 32 位有符号整数。
除数不为 0。
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。本题中,如果除法结果溢出,则返回 231 − 1。
这道题让我想起同事提到的一道题:有 a , b 两个变量,在不增加变量的情况下,把 a , b 两个值交换。很简单的他们两个有一个隐藏值 a+b 的和,那么用加减法就能简单解决了。
a = a + b; b = a - b ; 则 b 得到 a 的值;a = a - b 则 a 得到了原始b的值了 简单吧。
这道题也可以用加减法来做,但是用移位更快, 利用位运算,一个数左移一位等价于乘以2,所以除数左移一位等于乘以2;