L29 兩數相除

2021-10-07 01:24:14 字數 1215 閱讀 8166

兩數相除

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

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

整數除法的結果應當截去(truncate)其小數部分,例如:truncate(8.345) = 8 以及 truncate(-2.7335) = -2

示例 1:

輸入: dividend = 10, divisor = 3

輸出: 3

解釋: 10/3 = truncate(3.33333…) = truncate(3) = 3

示例 2:

輸入: dividend = 7, divisor = -3

輸出: -2

解釋: 7/-3 = truncate(-2.33333…) = -2

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

除數不為 0。

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−231, 231 − 1]。

本題中,如果除法結果溢位,則返回 2^31 − 1。

1.遞推法

class

solution

public

intdivide

(int dividend,

int divisor)

long a = dividend;

long b = divisor;

int sign =1;

if((a >

0&& b <0)

||(a <

0&& b >0)

) a = math.

abs(a)

; b = math.

abs(b)

;//都用正數來運算

long res =

div(a, b);if

(sign >0)

return res > integer.max_value ? integer.max_value:

(int

)res;

return

(int

)-res;

}long

div(

long a,

long b)

return cnt +

div(a - tb, b);}

}

29 兩數相除

這是數學題題啊,老本行。方法一 可以將除法轉移到對數域 b a eln b a e ln b ln a frac ab eln ab e lnb lna c code class solution 方法二 任何乙個整數可以表示成以2的冪為底的一組基的線性組合.分析 可以對被除數進行分解。以 10 和...

29 兩數相除

參考文獻 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。example 輸入 dividend 10,divisor 3 輸出 3 二進位制遞迴 class solution l...

29 兩數相除

29.兩數相除 難度中等321收藏分享切換為英文關注反饋 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。整數除法的結果應當截去 truncate 其小數部分,例如 truncat...