LeetCode 29. 两数相除

LeetCode 29. 两数相除_第1张图片

快速幂

class Solution {
public:
    int divide(int x, int y) {
        typedef long long LL;
        vector<LL>k;
        bool is_minus=false;
        if(x<0 && y>0 || x>0 && y<0)is_minus=true;
        LL a=abs((LL)x),b=abs((LL)y);
        for(LL i=b;i<=a;i=i+i)k.push_back(i);  //存储y的指数幂
        LL ans=0; 
        for(int i=k.size()-1;i>=0;i--){
            if(a>=k[i]){
                a-=k[i];
                ans+=(LL)1<<i;   
            }
        }
        if(is_minus)ans=-ans;
        if(ans>INT_MAX || ans<INT_MIN)ans=INT_MAX;
        return ans;
    }
};
//快速幂

你可能感兴趣的:(力扣,leetcode,算法,职场和发展)