LEETCODE: Divide Two Integers
2014-12-15 00:00
351 查看
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
class Solution {
public:
int divide(int dividend, int divisor) {
if(dividend == INT_MIN && divisor == -1) return INT_MAX;
int sign = 1;
if(dividend < 0)
sign *= -1;
if(divisor < 0)
sign *= -1;
long long big = abs((long long)dividend);
long long small = abs((long long)divisor);
long long temp = small;
long long midres = 1;
while(temp < big)
{
temp <<= 1;
midres <<= 1;
}
int ret = 0;
while(temp >= small)
{
while(big >= temp)
{
big -= temp;
ret += midres;
}
temp >>= 1;
midres >>= 1;
}
return ret*sign;
}
};
If it is overflow, return MAX_INT.
class Solution {
public:
int divide(int dividend, int divisor) {
if(dividend == INT_MIN && divisor == -1) return INT_MAX;
int sign = 1;
if(dividend < 0)
sign *= -1;
if(divisor < 0)
sign *= -1;
long long big = abs((long long)dividend);
long long small = abs((long long)divisor);
long long temp = small;
long long midres = 1;
while(temp < big)
{
temp <<= 1;
midres <<= 1;
}
int ret = 0;
while(temp >= small)
{
while(big >= temp)
{
big -= temp;
ret += midres;
}
temp >>= 1;
midres >>= 1;
}
return ret*sign;
}
};
相关文章推荐
- leetcode第一刷_Divide Two Integers
- 【leetcode】Divide Two Integers (middle)☆
- 【leetcode】29. Divide Two Integers
- LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)
- [LeetCode]题解(python):029-Divide Two Integers
- LeetCode 29. Divide Two Integers 二进制分解
- leetcode Divide Two Integers
- Leetcode 29. Divide Two Integers
- [LeetCode] 数学计算模拟类问题:加法,除法和幂,注意越界问题。题 剑指Offer,Pow(x, n) ,Divide Two Integers
- leetcode: 29. Divide Two Integers [✗]
- LeetCode 029 Divide Two Integers
- LeetCode-Divide Two Integers
- leetcode: Divide Two Integers
- LeetCode | Divide Two Integers
- [leetcode: Python]29. Divide Two Integers
- LeetCode题解:Divide Two Integers
- leetcode 29. Divide Two Integers
- LeetCode刷题笔记(模拟):divide-two-integers
- LeetCode: Divide Two Integers
- Leetcode29 Divide Two Integers