29. Divide Two Integers
2016-04-25 00:48
302 查看
Divide two integers without using multiplication, division and mod operator.
If it is overflow, return MAX_INT.
思路:采用累加法,设置一个sum和一个count,下面演示一下累加法的过程 比如26/5
sum=5,count=1 dividend=26;
sum=sum+sum=10 count=count+count=2 dividend=26;
sum=sum+sum=20 count=count+count=4 dividend=26;
sum=sum+sum=40>25 dividend=1;
count=5;
代码如下(已通过leetcode)
public class Solution {
public int divide(int dividend, int divisor) {
if(divisor==0) return Integer.MAX_VALUE;
if(dividend==0) return 0;
long tempdividend=dividend;
long tempdivisor=divisor;
tempdividend=Math.abs(tempdividend);
tempdivisor=Math.abs(tempdivisor);
if(tempdividend<tempdivisor) return 0;
long tempres=0;
long sum;
long count;
while(tempdividend>=tempdivisor) {
count=1;
sum=tempdivisor;
while(sum+sum<=tempdividend) {
sum=sum+sum;
count=count+count;
}
tempdividend=tempdividend-sum;
tempres=tempres+count;
}
//System.out.println(tempres);
if((dividend>0) ^ (divisor>0)) tempres=-tempres;
if(tempres>Integer.MAX_VALUE || tempres<Integer.MIN_VALUE) return Integer.MAX_VALUE;
else return (int)tempres;
}
}
If it is overflow, return MAX_INT.
思路:采用累加法,设置一个sum和一个count,下面演示一下累加法的过程 比如26/5
sum=5,count=1 dividend=26;
sum=sum+sum=10 count=count+count=2 dividend=26;
sum=sum+sum=20 count=count+count=4 dividend=26;
sum=sum+sum=40>25 dividend=1;
count=5;
代码如下(已通过leetcode)
public class Solution {
public int divide(int dividend, int divisor) {
if(divisor==0) return Integer.MAX_VALUE;
if(dividend==0) return 0;
long tempdividend=dividend;
long tempdivisor=divisor;
tempdividend=Math.abs(tempdividend);
tempdivisor=Math.abs(tempdivisor);
if(tempdividend<tempdivisor) return 0;
long tempres=0;
long sum;
long count;
while(tempdividend>=tempdivisor) {
count=1;
sum=tempdivisor;
while(sum+sum<=tempdividend) {
sum=sum+sum;
count=count+count;
}
tempdividend=tempdividend-sum;
tempres=tempres+count;
}
//System.out.println(tempres);
if((dividend>0) ^ (divisor>0)) tempres=-tempres;
if(tempres>Integer.MAX_VALUE || tempres<Integer.MIN_VALUE) return Integer.MAX_VALUE;
else return (int)tempres;
}
}
相关文章推荐
- ONP - Transform the Expression问题的python实现
- C3P0的详细配置说明(com.mchange.v2.c3p0.ComboPooledDataSource)
- RTMP特性分析
- 源代码的设计、控制、实现与合作
- 配置Filter
- 从入门到精通:负载均衡技术全攻略
- iOS开发系列--通知与消息机制
- 使用“时间轴”面板
- codeforces 662B Graph Coloring(搜索(2sat思想))
- android studio学习---签名打包的两种方式
- 从B 树、B+ 树、B* 树谈到R 树
- jvm垃圾收集策略和算法
- 20145309java第三次实验报告
- Unity Shaders and Effects Cookbook (4-6)震撼的实时反射 动态立方图系统
- iOS开发系列--网络开发
- MyEclipse的优化,加快打开和编辑的速度
- LintCode_428_Pow(x, n)
- 151. Reverse Words in a String
- AFN框架介绍
- LintCode_133_最长单词