Leetcode 29 - Divide Two Integers
来源:互联网 发布:node.js实战 第1季 编辑:程序博客网 时间:2024/06/05 06:21
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
1 - 细节实现题。题目要求不使用乘法、除法和取模,还么还可以使用加法,减法和位运算。
2 - 最简单的方法,是不断减去被除数。
3 - 在这个基础上,可以做一点优化,每次把被除数翻倍,从而加速。
class Solution {public: int divide(int dividend, int divisor) { //INT_MIN/-1会溢出,因此使用unsigned int unsigned int result = 0; int sign = (dividend>0 ^ divisor>0); unsigned int a = abs(dividend); unsigned int b = abs(divisor); while(a>=b){ long long temp = b; int i = 0; //为提高效率,可让除数每次翻倍 for(;temp<=a;i++){ temp = temp << 1; } //用被除数减去除数,以确定倍数 a -= b << (i-1); result += 1 << (i-1); } return sign ? -result : (result<=INT_MAX ? result : INT_MAX); }};
0 0
- 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 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#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 29:Divide Two Integers
- leetcode 29:Divide Two Integers
- LeetCode 29: Divide Two Integers
- Leetcode-259. 3 Sum Smaller
- 使用docker volumes容器
- Windows 下 ORA-12560: TNS: 协议适配器错误的问题
- Leetcode 208. Implement Trie (Prefix Tree)
- Mac笔电盒盖保持声音输出?
- Leetcode 29 - Divide Two Integers
- POJ 1661 Help Jimmy
- Leetcode - 137. Single Number II
- Leetcode 215. Kth Largest Element in an Array
- Leetcode 295. Find Median from Data Stream
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- Leetcode 32 - Longest Valid Parentheses
- Leetcode 146. LRU Cache
- JavaSE014_数组之应用举例(实现浮点数转换成人民币读法字符串)