LeetCode 29. Divide Two Integers

Posted Travelller

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 29. Divide Two Integers相关的知识,希望对你有一定的参考价值。

单纯减法不行,需要用到位运算。

a<<b表示 a*(2^b).

LeetCode出现了令人惊恐的同一段代码不同运行时间的情况.....

class Solution {
public:
    int divide(int x, int y) {
        int ans=0;
        if (x==INT_MIN && y==-1) return INT_MAX;
        
        long a=abs((long)x),b=abs((long)y);
        while(a>=b) {
            long m=1;
            long t=b;
            while((t<<1) <a){
                m<<=1;t<<=1;
            }
            a-=t;ans+=m;
        }
        
        if ((long)x*(long)y>0) return ans;
        else return -ans;
    }
};

 

以上是关于LeetCode 29. Divide Two Integers的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 29. Divide Two Integers

Leetcode 29. Divide Two Integers

[LeetCode] 29. Divide Two Integers

LeetCode-29-Divide Two Integers

[leetcode] 29. divide two integers

[LeetCode]29. Divide Two Integers两数相除