您的位置:首页 > 其它

leetcode 29. Divide Two Integers 做除法

2017-03-09 10:49 387 查看
leetcode 29. Divide Two Integers

需要注意的是,符号优先级不确定的时候,就加括号。比如:return (int) (pos*ans);

public class Solution {
public int divide(int dividend, int divisor) {
if(divisor==0) return Integer.MAX_VALUE;
long m = Math.abs((long)divisor);
long n = Math.abs((long)dividend);
if(n==0||m>n) return 0;
int pos = -1;
if(dividend>0&&divisor>0||divisor<0&÷nd<0) pos = 1;

long ans = ldivide(n,m);

if(ans>Integer.MAX_VALUE){
return pos==-1?Integer.MIN_VALUE:Integer.MAX_VALUE;
}else{
return (int) (pos*ans);
}
// res==0
}

public long ldivide(long n,long m){
if(m>n) return 0;// break situation.
long sum = m;
long cnt = 1;
while(sum+sum<n){
sum += sum;
cnt += cnt;
}
// sum + sum > n;WS
// sum < n
return cnt + ldivide(n-sum,m);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: