Middle-题目127:29. Divide Two Integers

题目原文:
Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.
题目大意:
不用乘法、除法、取模实现两个数的除法,如果溢出则返回MAX_INT(232-1)
题目分析:
直接用a/b水过去的,正确的解法好像是模拟二进制的竖式除法,用位运算和加减解决。
源码:(language:java)

public class Solution {
    public int divide(int dividend, int divisor) {
        return (dividend==-2147483648 && divisor == -1)?Integer.MAX_VALUE:dividend/divisor;
    }
}

成绩:
2ms,beats 75.64%,众数3ms,66.70%
Cmershen的碎碎念:
原则上除法是CPU的底层上用硬件实现的,但可以用高级语言代码去模拟。据论坛中所说,实现除法、乘法、乘方等数值运算的问题在面试中还是比较常见的,有时间整理一下。

你可能感兴趣的:(Middle-题目127:29. Divide Two Integers)