29. Divide Two Integers
来源:互联网 发布:制冷系统理论计算软件 编辑:程序博客网 时间:2024/06/18 09:24
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
class Solution {
public int divide(int dividend, int divisor) {
if(dividend==0)return 0;
boolean isNeg=true;
if(dividend>0&&divisor>0||dividend<0&&divisor<0)
{
isNeg=false;
}
long dividendL=Math.abs((long)dividend);
long divisorL=Math.abs((long)divisor);
if(dividendL<divisorL)return 0;
long answer=0;
while(dividendL>=divisorL)
{
long a=divisorL;
long m=1;
while(a<<2<dividendL)
{
a<<=2;
m<<=2;
}
answer+=m;
dividendL-=a;
}
if(answer>Integer.MAX_VALUE&&!isNeg)return Integer.MAX_VALUE;
if(-answer<Integer.MIN_VALUE&&isNeg)return Integer.MIN_VALUE;
if(isNeg)
{
answer=-answer;
}
return (int) answer;
}
}
重点一:用long类型来处理溢出问题且注意最大值和最小值的情况
重点二:用减法处理除法时,用2次幂做基而非1作基降低复杂度
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 29. Divide Two Integers
- 快速幂
- Unity Cinemachine插件学习笔记,实现单目标和多目标之间切换
- 初始化Sping的几种方式。
- 选择排序(python实现)
- Intellij IDEA常用快捷键
- 29. Divide Two Integers
- 【JavaScript的Date对象】
- STL-list容器
- Spring-Boot使用profile来配置不同环境的配置文件
- 最大 / 小的K个数
- 单纯形法算法实现--java版
- java框架(2.0)SpringMVC的搭建
- 字符串哈希和哈希表的本质
- 【记录】Adobe AI CC 图片批量描摹脚本