leetcode 29 兩數相除 擊敗100

2021-10-02 09:39:33 字數 1431 閱讀 4391

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

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

示例 1:

輸入: dividend = 10, divisor = 3 輸出: 3 示例 2:

輸入: dividend = 7, divisor = -3 輸出: -2 說明:

被除數和除數均為 32 位有符號整數。 除數不為 0。 假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [−2^31, 2^31 − 1]。本題中,如果除法結果溢位,則返回 2^31 − 1。

public

static

intdivide

(int dividend,

int divisor)

//除數=最小整型數的處理

if(divisor == integer.min_value)

return0;

}//被除數=最小整型數且除數=-1,結果溢位的處理

if(dividend == integer.min_value && divisor ==-1

)//被除數=0直接返回0

if(dividend ==0)

//被除數、除數正負位標誌

boolean negtive1 =

true

;boolean negtive2 =

true

;//判斷是否為正數if(

(dividend &

0x80000000)==

0)if(

(divisor &

0x80000000)==

0)//記錄最終結果的正負

if(negtive1 && negtive2 ||

!negtive1 &&

!negtive2)

else

int target =0;

int countbit =0;

int temp = divisor;

//模擬除法運算,先找到除數最大可以左移到多少

while

(dividend <= temp)

else

}//模擬除法逐位的運算

while

(countbit >=

0&& dividend <= divisor)

//做了多少次減法,就是該位除之後的結果

target +=

(count << countbit)

; countbit--

; temp >>=1;

}//變為負數

if(negtive1)

return target;

}

LeetCode29 兩數相除

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

LeetCode 29 兩數相除

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

leetcode 29 兩數相除

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