码迷,mamicode.com
首页 > 其他好文 > 详细

【LeetCode】Divide Two Integers

时间:2017-03-21 22:02:35      阅读:174      评论:0      收藏:0      [点我收藏+]

标签:flow   ica   http   com   乘号   span   操作   opera   左移   

Divide two integers without using multiplication, division and mod operator.

If it is overflow, return MAX_INT.

 

题目要求不能使用除号、乘号和取余操作符。

我们使用移位操作符。<< 左移代表乘以2,>>右移代表除以2

//a,b分别为被除数和除数
    public int divide(int a,int b){
        long res=0;
        int sign = 1;
        if((a<0 && b>0)||(a>0&&b<0)){
            sign = -1;
        }
        if(b==0||(a==Integer.MIN_VALUE&&b==-1)){
            return Integer.MAX_VALUE;
        }
        if(a<b){
            return 0;
        }
        while(a>b){
            long temp = b;
            long p = 1;
            while(a>=(temp<<1)){
                temp<<=1;
                p<<=1;
            }
            a-=temp;
            res+=p;
        }
        res = sign*res;
        return (int) res;
    }

 

【LeetCode】Divide Two Integers

标签:flow   ica   http   com   乘号   span   操作   opera   左移   

原文地址:http://www.cnblogs.com/sMKing/p/6596734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!