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);
}
}
需要注意的是,符号优先级不确定的时候,就加括号。比如: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);
}
}
相关文章推荐
- LeetCode 29. Divide Two Integers(整数除法)
- LeetCode 29 Divide Two Integers 除法的原理
- LeetCode 29 Divide Two Integers (不使用乘法,除法,求模计算两个数的除法)
- LeetCode 29 Divide Two Integers 除法的原理
- LeetCode 29. Divide Two Integers(除法)
- leetcode 29. Divide Two Integers
- [leetcode 29] Divide Two Integers
- LeetCode(29)Divide Two Integers
- leetcode 29. Divide Two Integers
- LeetCode --- 29. Divide Two Integers
- Leetcode-29. Divide Two Integers
- leetcode29---Divide Two Integers
- LeetCode 29 Divide Two Integers
- [Leetcode]29. Divide Two Integers @python
- 【leetcode】29. Divide Two Integers
- 【leetcode-29】Divide Two Integers(C)
- leetcode-29. Divide Two Integers
- LeetCode - 29. Divide Two Integers
- Leetcode -- 29. Divide Two Integers
- LeetCode:29.Divide Two Integers[Medium]