# Divide Two integers Leetcode python

LeetCode has a Medium coding Problem in Its’ Algorithm Section “Divide Two integers Leetcode python”. Today We are going to solve this problem. LeetCode Link of the Problem is HERE

#### Question

Given two integers `dividend` and `divisor`, divide two integers without using multiplication, division, and mod operator.

The integer division should truncate toward zero, which means losing its fractional part. For example, `8.345` would be truncated to `8`, and `-2.7335` would be truncated to `-2`.

Return the quotient after dividing `dividend` by `divisor`.

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, if the quotient is strictly greater than `231 - 1`, then return `231 - 1`, and if the quotient is strictly less than `-231`, then return `-231`.

Examples

Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = 3.33333.. which is truncated to 3.

Input: dividend = 7, divisor = -3
Output: -2
Explanation: 7/-3 = -2.33333.. which is truncated to -2.
﻿

Constraints:

• `-231 <= dividend, divisor <= 231 - 1`
• `divisor != 0`

#### Solution to Divide Two integers Leetcode python

Firstly, check for the constraints. Since we are dealing with 32 bit signed integer. The Dividend must not be greater than 2**31 and must not be less than -2**31.

Secondly, Check for quotient if the dividend and divisor both are positive or both are negative the quotient must also be positive.

Create a loop that will run for the condition dividend >= divisor. Create some variables. temp and i add the according to the division condition.

Complete Solution

```class Solution(object):
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
if dividend>2**31:
return 6184773855
if dividend<-2**31:
return -6184773855
positive = (dividend < 0) == (divisor < 0)
dividend, divisor = abs(dividend), abs(divisor)
res = 0
while dividend >= divisor:
temp, i = divisor, 1
while dividend >= temp:
dividend -= temp
res += i
i *= 2
temp *= 2
if not positive:
res = -res
return min(max(-2**31-1, res), 2**31-1)```