---
# System prepended metadata

title: 29.Divide Two Integers
tags: [Leetcode, '2021']

---

---
title: 29.Divide Two Integers
tags: Leetcode,2021
---
# 【LeetCode】29. Divide Two Integers
## Description
>Given two integers dividend and divisor, divide two integers without using multiplication, division, and mod operator.

>Return the quotient after dividing dividend by divisor.

>The integer division should truncate toward zero, which means losing its fractional part. For example, truncate(8.345) = 8 and truncate(-2.7335) = -2.

>Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For this problem, assume that your function returns 231 − 1 when the division result overflows.
## Example 1:
```
Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = truncate(3.33333..) = 3.
```
## Example 2:
```
Input: dividend = 7, divisor = -3
Output: -2
Explanation: 7/-3 = truncate(-2.33333..) = -2.
```
## Example 3:
```
Input: dividend = 0, divisor = 1
Output: 0
```
## Example 4:
```
Input: dividend = 1, divisor = 1
Output: 1
```
## Constraints:
```
-231 <= dividend, divisor <= 231 - 1
divisor != 0
```
## Code
```
public class Solution {
    public int Divide(int dividend, int divisor) {
         if (divisor == 0) return int.MaxValue;
    int sign = dividend > 0 ^ divisor > 0 ? -1 : 1;
    long m = Math.Abs((long)dividend), n = Math.Abs((long)divisor), count = 0;
    for (m -= n; m >= 0; m -= n){
        count++;
        if (m == 0) break;
        for (int subCount = 1; m - (n << subCount) >= 0; subCount++){
            m -= n << subCount;
            count += (int)Math.Pow(2, subCount);
        }
    }
    return count*sign > int.MaxValue ? int.MaxValue : (int)count*sign;
    }
}
```