[LeetCode] 29. Divide Two Integers #29
Open
Comments
应该是不能用long定义变量的 |
Really hate this Problem. SO many overflow inputs... After hours of commits, finally fixed the overflow inputs...
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Given two integers
dividend
anddivisor
, divide two integers without using multiplication, division and mod operator.Return the quotient after dividing
dividend
bydivisor
.The integer division should truncate toward zero.
Example 1:
Example 2:
Note:
这道题让我们求两数相除,而且规定不能用乘法,除法和取余操作,那么这里可以用另一神器位操作 Bit Manipulation,思路是,如果被除数大于或等于除数,则进行如下循环,定义变量t等于除数,定义计数p,当t的两倍小于等于被除数时,进行如下循环,t扩大一倍,p扩大一倍,然后更新 res 和m。这道题的 OJ 给的一些 test case 非常的讨厌,因为输入的都是 int 型,比如被除数是 -2147483648,在 int 范围内,当除数是 -1 时,结果就超出了 int 范围,需要返回 INT_MAX,所以对于这种情况就在开始用 if 判定,将其和除数为0的情况放一起判定,返回 INT_MAX。然后还要根据被除数和除数的正负来确定返回值的正负,这里采用长整型 long 来完成所有的计算,最后返回值乘以符号即可,代码如下:
解法一:
我们可以通过递归的方法来解使上面的解法变得更加简洁:
解法二:
Github 同步地址:
#29
参考资料:
https://leetcode.com/problems/divide-two-integers/
https://leetcode.com/problems/divide-two-integers/discuss/13524/summary-of-3-c-solutions
https://leetcode.com/problems/divide-two-integers/discuss/13407/C%2B%2B-bit-manipulations
https://leetcode.com/problems/divide-two-integers/discuss/142849/C%2B%2BJavaPython-Should-Not-Use-%22long%22-Int
LeetCode All in One 题目讲解汇总(持续更新中...)
The text was updated successfully, but these errors were encountered: