3 29leetcode兩數相除

2021-10-23 01:20:06 字數 1069 閱讀 9798

給定兩個整數,被除數 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...