029 Divide Two Integers 两数相除
不使用乘号,除号和取模符号将两数相除。
如果溢出返回 MAX_INT。
详见:https://leetcode.com/problems/divide-two-integers/description/
Java实现:
位操作Bit Operation,思路是:如果被除数大于或等于除数,则进行如下循环,定义变量t等于除数,定义计数p,当t的两倍小于等于被除数时,进行如下循环,t扩大一倍,p扩大一倍,然后更新res和m。
class Solution { public int divide(int dividend, int divisor) { int res=0; if(divisor==0){ return Integer.MAX_VALUE; } if(dividend==Integer.MIN_VALUE&&divisor==-1){ return Integer.MAX_VALUE; } long m=Math.abs((long)dividend); long n=Math.abs((long)divisor); while(m>=n){ long t=n,p=1; while(m>=(t<<1)){ t<<=1; p<<=1; } res+=p; m-=t; } if((dividend>0 && divisor>0)||(dividend<0 && divisor<0)){ return res; }else{ return -res; } } }
参考:https://www.cnblogs.com/grandyang/p/4431949.html