您的位置:首页 > 其它

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;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: