leetcode: Divide Two Integers
2014-06-17 20:59
330 查看
将因子不断乘以2(可以通过移位实现,同时结果也从1开始不断移位加倍),然后和被除数比较,等到大于被除数一半了,就从被除数中减去,将因子个数叠加入结果中。然后在剩下的被除数中采用同样的方法减去小于其一半的因子和,循环往复
必须要unsigned int
必须要unsigned int
class Solution { public: int divide(int dividend, int divisor) { assert( divisor != 0); int res = 0; bool neg = (( dividend ^ divisor) >> ( sizeof(int) * 8 - 1)) ? false : true; unsigned tdividend = abs(dividend); unsigned tdivisor = abs(divisor); while( tdividend > tdivisor){ int factor = 1; unsigned tmp = tdivisor; while( (tmp<<= 1) < tdividend){ factor <<= 1; } tdividend -= ( tmp >>= 1); res += factor; } if( tdividend == tdivisor) ++res; return neg ? res : -res; } };
相关文章推荐
- **LeetCode-Divide Two Integers
- leetcode面试准备:Divide Two Integers
- [leetcode] 29. Divide Two Integers
- 51_leetcode_Divide Two Integers
- LeetCode 28. Divide Two Integers
- Leetcode: Divide Two Integers
- LeetCode OJ Divide Two Integers
- Divide Two Integers leetcode java
- python写算法题:leetcode: 29. Divide Two Integers
- [LeetCode] Divide Two Integers
- Leetcode Divide Two Integers
- Leetcode|Divide Two Integers
- LeetCode 29 - Divide Two Integers
- LeetCode 29. Divide Two Integers
- Leetcode 29 Divide Two Integers
- leetcode 29. Divide Two Integers
- LeetCode 29 Divide Two Integers 除法的原理
- LeetCode-Divide Two Integers-快速除法
- LeetCode: Divide Two Integers [028]
- [LeetCode] Divide Two Integers