LeetCode-29. 两数相除(Divide Two Integers)

各种特判

class Solution {
public:
    int divide(int dividend, int divisor) {
    	if(dividend == INT_MIN && divisor == -1) return INT_MAX;
        int flag = (dividend < 0) ^ (divisor < 0) ? 0 : 1;
        long long m = abs((long long)dividend);
        long long n = abs((long long)divisor);
        long long ans = 0;
        if(n == 1) return flag? m : -m;
        while(m >= n) {
        	long long t = n, p = 1;
        	while(m >= (t << 1)){
        		p <<= 1;
        		t <<= 1;
        	}
        	ans += p;
        	m -= t;
        }
        return flag? ans : -ans;
    }
};

题目链接:https://leetcode-cn.com/problems/divide-two-integers/

发布了42 篇原创文章 · 获赞 2 · 访问量 1405

猜你喜欢

转载自blog.csdn.net/Listen_heart/article/details/103127907