Java算法题:两整数相除

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


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容