剑指 Offer II 001. 整数除法 #
- 标签:位运算、数学
- 难度:简单
题目大意 #
给定两个整数,被除数 dividend 和除数 divisor。要求返回两数相除的商,并且不能使用乘法,除法和取余运算。取值范围在 $[-2^{31}, 2^{31}-1]$。如果结果溢出,则返回 $2^{31} - 1$。
解题思路 #
题目要求不能使用乘法,除法和取余运算。
可以把被除数和除数当做二进制,这样进行运算的时候,就可以通过移位运算来实现二进制的乘除。
-
先将除数不断左移,移位到位数大于或等于被除数。记录其移位次数 count。
-
然后再将除数右移 count 次,模拟二进制除法运算。
- 如果当前被除数大于等于除数,则将 1 左移 count 位,即为当前位的商,并将其累加答案上。再用除数减去被除数,进行下一次运算。
代码 #
|
|