Java算法题:两整数相除

2018-08-16  本文已影响0人  会九卦的兔子

给定两个整数,被除数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;

上一篇 下一篇

猜你喜欢

热点阅读