Leetcode 29 两数相除 Divide Two Integers

给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。

返回被除数 dividend 除以除数 divisor 得到的商。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/divide-two-integers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 

方法:

首先,定下结果的符号,再将除数和被除数取绝对值,最后返回时再加上符号。

接着,函数主体是递归,每次将除数加倍,直到成为小于a的最大倍数,再返回剩余的部分除以除数的商。

针对特殊情况,当被除数为0时,直接返回0,当除数为-1时,若被除数为最小整数,则返回最大整数。

class Solution {
public:
    int divide(int dividend, int divisor) {
        if (dividend==0)  return  0;
	if (divisor==1) return dividend;
	if (divisor==-1 && dividend==INT_MIN){
	    return INT_MAX;
	}

	long a=dividend,b=divisor;
	int sign=1;
	if((a<0&&b>0)||(a>0&&b<0)){
	    sign=-1;	
	}
	a=abs(a);
	b=abs(b);
	long res=div(a,b);
	if(sign==-1) return -res;
	else return res;
    }
    int div(long a,long b){
	if(a

Leetcode 29 两数相除 Divide Two Integers_第1张图片

 

 

你可能感兴趣的:(Leetcode 29 两数相除 Divide Two Integers)