详细思路

对于被除数,找到最大的除数倍数不超过被除数,此时最大倍数作为和的一部分,获得新的被除数,如果被除数最大倍数不到1return0
 
详细思路
ans1已经找到的最大倍数
class Solution {
public:
    int divide(int dividend, int divisor) {
        if(dividend==INT_MIN&&divisor==-1)return INT_MAX;
        long a=dividend,b=divisor;
        bool isNegative=false;
        if(a<0&&b>0)isNegative=true;
        if(a>0&&b<0)isNegative=true;
        a=a>0?a:-a;
        b=b>0?b:-b;
        return isNegative?-getAns(a,b):getAns(a,b);
    }
    long getAns(long dividend,long divisor){
        if(dividend<divisor)return 0;
        long ans1=1;
        while(dividend>=divisor*(ans1+ans1)){   
            ans1=ans1+ans1;
        }
        return ans1+getAns(dividend-ans1*divisor,divisor);
    }
};

 

posted on 2021-07-27 10:30  offer快到碗里来~  阅读(368)  评论(0)    收藏  举报