[LeetCode] Divide Two Integers
2012-11-26 21:23
453 查看
Divide two integers without using multiplication, division and mod operator.
class Solution { private: long long f[100]; public: int bsearch(long long a[], int left, int right, long long key) { if (left > right) return -1; int mid = left + (right - left) / 2; if (a[mid] == key) return mid; else if (a[mid] < key) { int pos = bsearch(a, mid + 1, right, key); return pos == -1 ? mid : pos; } else { return bsearch(a, left, mid - 1, key); } } int divide(int dividend, int divisor) { // Start typing your C/C++ solution below // DO NOT write int main() function int sign = dividend < 0 ? -1 : 1; if (divisor < 0) sign *= -1; long long div = dividend; div = abs(div); long long divisorL = divisor; divisorL = abs(divisorL); f[0] = divisorL; int size = 1; while(true) { if (f[size-1] >= div) break; f[size] = f[size-1] + f[size-1]; size++; } int num = 0; long long sum = 0; while(div > 0) { int pos = bsearch(f, 0, size - 1, div); if (pos == -1) break; div -= f[pos]; num += (1 << pos); } return num * sign; } };
相关文章推荐
- [LeetCode]29. Divide Two Integers
- LeetCode-29.Divide Two Integers
- leetcode - 29.Divide Two Integers
- LeetCode --- 29. Divide Two Integers
- 【leetcode】Divide Two Integers (middle)☆
- 【Leetcode】【Medium】Divide Two Integers
- [Leetcode]Divide Two Integers
- 【leetcode】Divide Two Integers
- leetcode Divide Two Integers
- 【C++】【LeetCode】29. Divide Two Integers
- LeetCode: Divide Two Integers
- leetcode解题方案--028--Divide Two Integers
- [Leetcode] Divide Two Integers
- Leetcode -- Divide Two Integers
- leetcode——Divide Two Integers 不用乘除取余操作求除法(AC)
- leetcode 29 Divide Two Integers(整数相除)
- 【Leetcode】Divide Two Integers
- Divide Two Integers @LeetCode
- LeetCode之操作两个数相除DivideTwoIntegers
- LeetCode: Divide Two Integers