LeetCode 029 兩數相除

2021-09-17 23:06:57 字數 766 閱讀 3396

029 兩數相除

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法、除法和 mod 運算子。

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

示例 1:

輸入: dividend = 10, divisor = 3

輸出: 3

示例 2:

輸入: dividend = 7, divisor = -3

輸出: -2

說明:

被除數和除數均為 32 位有符號整數。

除數不為 0。

思路:移位法

如果不能用除,大家可以用減,每減乙個divisor,就++,這種太複雜了

我們可以考慮用2^n來比較,從31開始,依次減小,如果dividend大於2的n次方*advisor,然後就減去然後繼續比較,直到比較完

核心算式:

for (int i = 31; i>=0 ; i--) 

boolean flag;

flag=(dividend^divisor)<0;

long t=math.abs((long)dividend);

long d=math.abs((long)divisor);

int result=0;

for (int i = 31; i>=0 ; i--)

}return flag? -result:result;

}

LeetCode029 兩數相除

給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出 2說...

LeetCode 029 兩數相除

給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncate 8.345 8 以及 truncate ...

LeetCode 兩數相除

題目 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出...