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.
Constraints
-231 <= dividend, divisor <= 231 - 1
divisor != 0
Approach
Links
GeeksforGeeks
ProgramCreek
YouTube
Examples
Input: dividend = 10, divisor = 3
Output: 3
Explanation: 10/3 = truncate(3.33333..) = 3.
Solutions
/**
* Time complexity : O(n)
* Space complexity : O(1)
*/
class Solution {
public int divide(int dividend, int divisor) {
if(dividend == 0 || divisor == 1) {
return dividend;
} else if(divisor == -1) {
if(dividend == Integer.MIN_VALUE) {
return Integer.MAX_VALUE;
}
return dividend * divisor;
}
int m = Math.abs(dividend);
int n = Math.abs(divisor);
int count = 0;
while(m-n >= 0) {
m -= n;
count++;
}
return ((dividend >= 0 && divisor >=0) ||
(dividend < 0 && divisor < 0))? count: count*-1;
}
}
Follow up
Last updated
Was this helpful?