leetcode: Divide Two Integers
2013-10-30 16:18
155 查看
http://oj.leetcode.com/problems/divide-two-integers/
思路:
典型的二分法。以87除4举例, (4 * 2 = 8) => (8 * 2 = 16) => (16 * 2 = 32) => (32 * 2) => 64,因为64 * 2 = 128大于87,现在我们可以确定4 * 16 = 64小于87,那么再处理87 - 64 = 23,23除4的话用上面方法可以得到5,还余3,因为小于4,扔掉,所以最后结果是16 + 5 = 21。因为需要考虑溢出问题,所以先把数字转换为unsigned long long,最后转成int返回。
Divide two integers without using multiplication, division and mod operator.
思路:
典型的二分法。以87除4举例, (4 * 2 = 8) => (8 * 2 = 16) => (16 * 2 = 32) => (32 * 2) => 64,因为64 * 2 = 128大于87,现在我们可以确定4 * 16 = 64小于87,那么再处理87 - 64 = 23,23除4的话用上面方法可以得到5,还余3,因为小于4,扔掉,所以最后结果是16 + 5 = 21。因为需要考虑溢出问题,所以先把数字转换为unsigned long long,最后转成int返回。
class Solution { public: long long internalDivide(unsigned long long dividend, unsigned long long divisor) { if (dividend < divisor) { return 0; } long long result = 1; unsigned long long tmp = divisor, left; while (tmp <= dividend) { left = dividend - tmp; tmp <<= 1; if (tmp > dividend) { break; } else { result <<= 1; } } return result + internalDivide(left, divisor); } int divide(int dividend, int divisor) { unsigned long long _dividend = abs((long long)dividend), _divisor = abs((long long)divisor); bool positive = ((dividend >= 0) && (divisor > 0)) || ((dividend <= 0) && (divisor < 0)); return positive ? internalDivide(_dividend, _divisor) : (-1) * internalDivide(_dividend, _divisor); } };
相关文章推荐
- leetcode — divide-two-integers
- Leetcode: Divide Two Integers
- [LeetCode] Divide Two Integers 解题报告
- [leetcode]Divide Two Integers
- leetcode002-数值处理Reverse Integer,Pow(x,n), atoi, Divide Two Integers
- LeetCode-Divide Two Integers
- LeetCode 029 Divide Two Integers
- 【LeetCode 29】Divide Two Integers
- 【LeetCode-面试算法经典-Java实现】【029-Divide Two Integers(两个整数相除)】
- [LeetCode]29. Divide Two Integers
- LeetCode之Divide Two Integers
- [LeetCode]Divide Two Integers
- Leetcode 29. Divide Two Integers
- 【leetcode-29】Divide Two Integers(C)
- #leetcode#Divide Two Integers
- [leetcode] 29. Divide Two Integers
- LeetCode题解——Divide Two Integers
- Java for LeetCode 029 Divide Two Integers
- [LeetCode]Divide Two Integers
- Divide Two Integers leetcode java