LeetCode-29. Divide Two Integers

Given two integers dividend and divisor, divide two integers without using multiplication, division and mod operator.

Return the quotient after dividing dividend by divisor.

The integer division should truncate toward zero.

Example 1:

Input: dividend = 10, divisor = 3
Output: 3

Example 2:

Input: dividend = 7, divisor = -3
Output: -2

Note:

  • Both dividend and divisor will be 32-bit signed integers.
  • The divisor will never be 0.
  • Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231,  231 − 1]. For the purpose of this problem, assume that your function returns 231 − 1 when the division result overflows.

题目大意 不适用乘、除、mod的情况下,计算两数的商,注意溢出的情况。

,所以使用位运算去求i比较方便

 

class Solution {
public:
    int divide(int dividend, int divisor) {
        if(dividend==0){
            return 0;
        }
        if(dividend==INT_MIN&&divisor==-1){
            return INT_MAX;
        }
        if(dividend==INT_MAX&&divisor==1){
            return INT_MAX;
        }
        if(dividend==INT_MIN&&divisor==1){
            return INT_MIN;
        }
        if(dividend==INT_MAX&&divisor==-1){
            return INT_MIN;
        }
        //使用位运算,不管dividend和divisor怎么变化,2的i次方求和与divisor的积一定会等于dividend,
        int flag =1;
        if(dividend<0){
            flag*= -1;
        }
        if(divisor<0){
            flag*= -1;
        }
        long long ans =0;
       
        long long m = abs((long long)dividend);
        long long n = abs((long long)divisor);
        while(m>=n){
            long long i=1;
            long long a=n;
            while((a<<1)<m){
                a=a<<1;
                i=i<<1;
            }
            ans+=i;
            m-=a;
        }
        //cout<<ans<<endl;
        return flag*ans;
    }
};

全部评论

相关推荐

如题,这操作。。。。
真烦好烦真烦:既想享受国家的招聘应届生福利,又不想培养新人,我只能说这种企业的ld太过分了
投递美的集团等公司10个岗位 >
点赞 评论 收藏
分享
03-20 11:10
已编辑
大连民族大学 Java
点赞 评论 收藏
分享
04-30 15:51
已编辑
上海交通大学 机械工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务