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); } }