LeetCode-29.两数相除

地址:https://leetcode-cn.com/problems/divide-two-integers/

思路:运用位移运算,由大到小依次判断即可

Code:

class Solution {
public:
    int divide(int dividend, int divisor) {
        int INF=((long long)1<<31)-1;
        long long a=dividend,b=divisor;
        long long res=0,p=1,x=b,y=1;
        if(a<0){
            a=-a;   p=-p;
        }
        if(b<0){
            b=-b;   p=-p;   x=-x;
        }
        while(a>=x){
            x<<=1;  y<<=1;
        }
        x>>=1;  y>>=1;
        while(a>=b){
            if(a>=x){
                a-=x;    res+=y;
            }
            x>>=1;  y>>=1;
        }
        if(p<0) res=-res;
        if(res>INF) res=INF;
        return res;
    }
};

 

发布了325 篇原创文章 · 获赞 7 · 访问量 3万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 精致技术 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览