給定兩個整數,被除數 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
#define int_max 0x7fffffff
#define int_min 0x80000000
intdivide
(int dividend,
int divisor)
//若被除數為int_min,先減一次再運算
d1=abs(dividend);if
(divisor!=int_min)
d2=abs(divisor)
;else
if(d1==d2)
if(d1==0)
return0;
if(d1==int_min)
for(i=
31;i>=
0;i--)}
if(d1==d2)
cnt++;if
(std==
0)
cnt=cnt*-1
;return
(int
)cnt;
}
這道題目,我一開始想到的就是用減法計算,在跨過一道一道坎後發現減法運算時間超時,因此不得不運用位運算(把**從減法改到位運算感覺還行)。當然,我們首先還得把幾種溢位情況排除才能進行計算。 LeetCode 兩數相除
題目 給定兩個整數,被除數dividend和除數divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數dividend除以除數divisor得到的商。示例 1 輸入 dividend 10,divisor 3輸出 3示例 2 輸入 dividend 7,divisor 3輸出...
LeetCode 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。示例 1 輸入 dividend 10,divisor 3 輸出 3 示例 2 輸入 dividend 7,divis...
LeetCode 兩數相除
給定兩個整數,被除數 dividend 和除數 divisor。將兩數相除,要求不使用乘法 除法和 mod 運算子。返回被除數 dividend 除以除數 divisor 得到的商。示例 1 輸入 dividend 10,divisor 3 輸出 3 示例 2 輸入 dividend 7,divis...