题目原文:
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的底层上用硬件实现的,但可以用高级语言代码去模拟。据论坛中所说,实现除法、乘法、乘方等数值运算的问题在面试中还是比较常见的,有时间整理一下。
本文介绍了一种不使用乘法、除法和取模运算实现两整数相除的方法,并提供了一个Java代码示例。该方法适用于面试场景,讨论了如何通过位运算和加减操作来模拟二进制竖式除法。

被折叠的 条评论
为什么被折叠?



