LeetCode: Divide Two Integers Solution
Approach
Use log identities (easy to understand)
1log(a/b) = log(c)2=> log(a) - log(b) = log(c)3=> e^(log(a) - log(b)) = c
Implementation
1/**2 * @param {number} dividend3 * @param {number} divisor4 * @return {number}5 */6var divide = function (dividend, divisor) {7 const MIN_INT = -Math.pow(2, 31)8 const MAX_INT = Math.pow(2, 31) - 19 const sign = (dividend > 0) ^ (divisor > 0) ? -1 : 11011 dividend = Math.abs(dividend)12 divisor = Math.abs(divisor)1314 let res = Math.floor(Math.exp(Math.log(dividend) - Math.log(divisor)))15 res *= sign16 res = Math.min(res, MAX_INT)17 res = Math.max(res, MIN_INT)1819 return res20}
Comments
Loading comments...
Tags
leetcode
math
bit manipulation
Apply and earn a $2,500 bonus once you're hired on your first job!
Clients from the Fortune 500 to Silicon Valley startups
Choose your own rate, get paid on time
From hourly, part-time, to full-time positions
Flexible remote working environment
A lot of open JavaScript jobs!!
Fact corner: Referred talent are 5x more likely to pass the Toptal screening process than the average applicant.
Still hesitate? Read HoningJS author's guide on dealing with Toptal interview process.